当前位置: 代码迷 >> DB2 >> 求存储过程OUT参数类型的解决方法
  详细解决方案

求存储过程OUT参数类型的解决方法

热度:9451   发布时间:2013-02-26 00:00:00.0
求存储过程OUT参数类型的解决办法
我遇到一个问题,DB2中的存储过程的参数中,OUT参数都是哪些类型,可否OUT一张表的类型。怎么写呢。


CREATE PROCEDURE ERRORPRODURE (IN VARNAME DATE, OUT P_SQLSTATE_OUT VARCHAR(20),OUT P_SQLCODE_OUT INT,OUT V_TRUNC INT,OUT OUT_ATABLE "ATABLE")
LANGUAGE SQL
MODIFIES SQL DATA
P1: BEGIN NOT ATOMIC--ATOMIC

DECLARE V_CHAR VARCHAR(20);
DECLARE V_ID INT DEFAULT 5;
DECLARE V_NAME VARCHAR(4);
DECLARE SQLCODE INT DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';

DECLARE T_ATABLE ATABLE;  

SELECT * INTO T_ATABLE FROM ATABLE;

set OUT_ATABLE = T_ATABLE;

------解决方案--------------------------------------------------------
这个简单,给你个例子就明白了。如果你想返回表的话需要使用游标。

create procedure procedure1(v_userid char(20))
dynamic result sets 1
begin
declare str varchar(100);
declare stmt statement;
declare c1 cursor with return to caller for stmt ;

 set str = 'select * from emp1 where userid=?';
 prepare stmt from str;
 open c1 using v_userid;
end


给分吧
------解决方案--------------------------------------------------------
应该是这句 :create type test as (col1 integer) mode db2sql

定义异常:
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE MYEXCEPTION CONDITION FOR SQLSTATE '70003';
这两句没问题

如果要抛出处理用:
DECLARE 处理类型 HANDLER FOR 条件 
处理语句

具体的可以看看ibm的文档

探讨
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';

create type test as (col1 integer);
--定义一个异常类型
DECLARE MYEXCEPTION CONDITION FOR SQLSTATE '70003';

直接拿过来似乎不行。我记得Oracle中可以自己定义你的结果集结构。很想知道DB2中是如何实现的。还请……
  相关解决方案