DB2存儲(chǔ)過(guò)程使用動(dòng)態(tài)游標(biāo)的例子
本文將為您介紹一個(gè)DB2存儲(chǔ)過(guò)程使用動(dòng)態(tài)游標(biāo)的例子,如果您對(duì)動(dòng)態(tài)游標(biāo)的使用感興趣的話,不妨一看,對(duì)您學(xué)習(xí)DB2的使用會(huì)有所幫助。
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 
     --聲明開(kāi)始 
     --臨時(shí)變量出錯(cuò)變量 
       DECLARE SQLCODE       integer default 0; 
       DECLARE SQLStmt       varchar(1024) default ''; 
       DECLARE r_code        integer default 0; 
       DECLARE state         varchar(1024) default 'AAA';--記錄程序當(dāng)前所作工作 
       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_wtptest';
     --聲明放游標(biāo)的值 
     --聲明動(dòng)態(tài)游標(biāo)存儲(chǔ)變量 
       DECLARE stmt1 STATEMENT; 
       DECLARE c1 CURSOR FOR stmt1;
     --聲明出錯(cuò)處理 
       DECLARE EXIT HANDLER FOR SQLEXCEPTION #p#
          begin 
             set r_code=SQLCODE; 
             set o_err_no=1; 
             set o_err_msg='處理['||state||']出錯(cuò) ,'||'錯(cuò)誤代碼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 
             set at_end = 1; 
             set state='找到0行記錄或已經(jīng)到記錄結(jié)尾.'; 
          end; 
     --聲明結(jié)束
     SET state='[add]單獨(dú)測(cè)試中,統(tǒng)計(jì)條數(shù)'; 
            SET SQLStmt='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]查具體信息'; 
            SET at_end = 0; 
            SET SQLStmt='SELECT recv_userid FROM wtp_pre_download where task_timestamp = ?'; 
            PREPARE c1 FROM SQLStmt; 
            OPEN c1 USING in_taskid_timestamp; 
            SET state='[add]************'; 
            FETCH c1 INTO t_recvid; 
            SET state='[add]============'; 
            insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,t_recvid); 
     END p1















 
 
 
 
 
 
 