我遇到一个问题,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的文档