程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2存儲過程中對動態游標的正確使用方案

DB2存儲過程中對動態游標的正確使用方案

編輯:DB2教程

此文章主要介紹的是DB2存儲過程中對動態游標的正確使用,相信如果你掌握了DB2存儲過程中對動態游標的正確使用這項技術,會在以後的學習或是工作中帶來很大的幫助,以下就是文章的主要內容的詳細描述。

  1. CREATE PROCEDURE data_wtptest( IN in_taskid_timestamp varchar(30),  
  2. OUT o_err_no int,  
  3. OUT o_err_msg varchar(1024))  
  4. LANGUAGE SQL  
  5. P1: BEGIN ATOMIC  

聲明開始

臨時變量出錯變量

  1. DECLARE SQLCODE integer default 0;  
  2. DECLARE SQLStmt varchar(1024) default '';  
  3. DECLARE r_code integer default 0;  
  4. DECLARE state varchar(1024) default 'AAA'; 

記錄程序當前所作工作

  1. DECLARE at_end int DEFAULT 0;  
  2. DECLARE t_destnetid int default 0;  
  3. DECLARE t_recvid varchar(30) default '';  
  4. DECLARE SP_Name varchar(50) default 'data_integrate'; 

聲明DB2存儲過程中放游標的值

聲明動態游標存儲變量

  1. DECLARE stmt1 STATEMENT;  
  2. DECLARE c1 CURSOR FOR stmt1; 

聲明出錯處理

  1. DECLARE EXIT HANDLER FOR SQLEXCEPTION  
  2. begin  
  3. set r_code=SQLCODE;  
  4. set o_err_no=1; 

set o_err_msg='處理['||state||']出錯 ,'||'錯誤代碼SQLCODE:['||CHAR(r_code) || '].';

  1. insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,o_err_msg);  
  2. end;  
  3. DECLARE continue HANDLER for not found  
  4. begin  
  5. set at_end = 1; 

set state='找到0行記錄或已經到記錄結尾.';

end;

聲明結束

SET state='[add]單獨測試中中,統計條數';

  1. SET SQLStmt='SELECT count(*) FROM wtp_pre_download where task_timestamp = ?';  
  2. PREPARE stmt1 FROM SQLStmt;  
  3. OPEN c1 USING in_taskid_timestamp;  
  4. FETCH c1 INTO t_destnetid;  
  5. CLOSE c1; 

SET state='[add]查具體信息';

  1. SET at_end = 0;  
  2. SET SQLStmt='SELECT recv_userid FROM wtp_pre_download where task_timestamp = ?';  
  3. PREPARE c1 FROM SQLStmt;  
  4. OPEN c1 USING in_taskid_timestamp;  
  5. SET state='[add]************';  
  6. FETCH c1 INTO t_recvid;  
  7. SET state='[add]============';  
  8. insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,t_recvid);  
  9. END p1 

以上的相關內容就是對DB2存儲過程中使用動態游標的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved