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

DB2編程序的技巧之游標的正確使用

編輯:DB2教程

我們今天主要向大家講述的是DB2編程序的小技巧之游標的使用,如果你對DB2編程序的小技巧之游標的使用有興趣的話,你就可以對以下的文章點擊觀看了,以下就是文章的主要內容的詳細描述,望大家在浏覽之後會對其有更深的了解。

注意commit和rollback

使用游標時要特別注意如果沒有加with hold 選項,在Commit和Rollback時,該游標將被關閉。Commit 和Rollback有很多東西要注意。特別小心

游標的兩種定義方式

一種為

  1. declare continue handler for not found  
  2. begin  
  3. set v_notfound = 1;  
  4. end;  
  5. declare cursor1 cursor with hold for select market_code from tb_market_code for update;  
  6. open cursor1;  
  7. set v_notfound=0;  
  8. fetch cursor1 into v_market_code;  
  9. while v_notfound=0 Do  
  10. --work  
  11. set v_notfound=0;  
  12. fetch cursor1 into v_market_code;  
  13. end while;  
  14. close cursor1;  

這種方式使用起來比較復雜,但也比較靈活。特別是可以使用with hold 選項。如果循環內有commit或rollback 而要保持該cursor不被關閉,只能使用這種方式。

另一種為

  1. pcursor1: for loopcs1 as cousor1 cursor as  
  2. select market_code as market_code  
  3. from tb_market_code  
  4. for update  
  5. do  
  6. end for;  

這種方式的優點是比較簡單,不用也不允許)使用open,fetch,close。

但不能使用with hold 選項。如果在游標循環內要使用commit,rollback則不能使用這種方式。如果沒有commit或rollback的要求,推薦使用這種方式(看來For這種方式有問題)。

修改游標的當前記錄的方法

  1. update tb_market_code set market_code='0' where current of cursor1; 

不過要注意將cursor1定義為可修改的游標

  1. declare cursor1 cursor for select market_code from tb_market_code  
  2. for update;  

for update 不能和GROUP BY、 DISTINCT、 ORDER BY、 FOR READ ONLY及UNION, EXCEPT, or INTERSECT但 UNION ALL除外)一起使用。

DB2編程序的小技巧之游標的使用

上述的相關內容就是對DB2編程序的小技巧之游標的使用的描述,希望會給你帶來一些幫助在此方面。

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