此文章主要介绍的是DB2存储过程中对动态游标的正确使用,相信如果你掌握了DB2存储过程中对动态游标的正确使用这项技术,会在以后的学习或是工作中带来很大的帮助,以下就是文章的主要内容的详细描述。
CREATE PROCEDURE data_wtptest( IN in_taskid_timestamp varchar(30),
OUT o_err_no int,
OUT o_err_msg varchar(1024))
LANGUAGE SQL
P1: BEGIN ATOMIC
声明开始
临时变量出错变量
DECLARE SQLCODE integer default 0;
DECLARE SQLStmt varchar(1024) default '';
DECLARE r_code integer default 0;
DECLARE state varchar(1024) default 'AAA';
记录程序当前所作工作
DECLARE at_end int DEFAULT 0;
DECLARE t_destnetid int default 0;
DECLARE t_recvid varchar(30) default '';
DECLARE SP_Name varchar(50) default 'data_integrate';
声明DB2存储过程中放游标的值
声明动态游标存储变量
DECLARE stmt1 STATEMENT;
DECLARE c1 CURSOR FOR stmt1;
声明出错处理
DECLARE EXIT HANDLER FOR SQLEXCEPTION
begin
setr_code=SQLCODE;
seto_err_no=1;
set o_err_msg='处理['||state||']出错 ,'||'错误代码SQLCODE:['||CHAR(r_code) || '].';
insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,o_err_msg);
end;
DECLARE continue HANDLER for not found
begin
setat_end=1;
set state='找到0行记录或已经到记录结尾.';
end;
声明结束
SET state='[add]单独测试中中,统计条数';
SETSQLStmt='SELECT count(*) FROM wtp_pre_download where task_timestamp = ?';
PREPARE stmt1 FROM SQLStmt;
OPEN c1 USING in_taskid_timestamp;
FETCH c1 INTO t_destnetid;
CLOSE c1;
SET state='[add]查具体信息';
SETat_end=0;
SETSQLStmt='SELECT recv_userid FROM wtp_pre_download where task_timestamp = ?';
PREPARE c1 FROM SQLStmt;
OPEN c1 USING in_taskid_timestamp;
SETstate='[add]************';
FETCH c1 INTO t_recvid;
SETstate='[add]============';
insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,t_recvid);
END p1
以上的相关内容就是对DB2存储过程中使用动态游标的介绍,望你能有所收获。
【责任编辑:孙巧华 TEL:(010)68476606】
点赞 0