几种常用的DB2循环用法_DB2_数据库_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 数据库 > DB2 > 几种常用的DB2循环用法

几种常用的DB2循环用法

 2013/8/9 17:21:00    程序员俱乐部  我要评论(0)
  • 摘要:DB2循环的用途在DB2数据库中是很广泛的,下面就为您介绍四种常见的DB2循环用法,希望可以在您学习DB2循环方面有所帮助。1.利用得到的游标在存储过程中循环:DECLARECUR_FEESETCURSORWITHRETURNTOCALLERFOR(SELECT--FROM表WHERE条件);OPENCUR_FEESET;--得到游标--得到游标记录数SELECTcount(CIF_CSTNO)intov_countFROMCB_CSTINFA,CB_CSTBSNINFBWHEREA
  • 标签:用法 常用 循环

DB2循环的用途在DB2数据库中是很广泛的,下面就为您介绍四种常见的DB2循环用法,希望可以在您学习DB2循环方面有所帮助。

1.利用得到的游标在存储过程中循环:

    class="dp-xml">
  1. DECLARE CUR_FEESET CURSOR WITH RETURN TO CALLER FOR (  
  2. SELECT  
  3. --  
  4. FROM 表  
  5. WHERE 条件  
  6. );  
  7. OPEN CUR_FEESET;--得到游标  
  8. --得到游标记录数  
  9. SELECT  
  10. count(CIF_CSTNO)  
  11. into v_count  
  12. FROM CB_CSTINF A ,CB_CSTBSNINF B  
  13. WHERE A.CIF_STT<>'3' AND A.CIF_CSTNO = B.CBI_CSTNO ;   --  
  14. FETCH CUR_FEESET INTO V_CSTNO,V_FEECODE,V_CSTLEVEL,V_FEEMODE;--  
  15. WHILE V_COUNT>0 DO  
  16.  ……..  
  17. FETCH CUR_FEESET INTO V_CSTNO,V_FEECODE,V_CSTLEVEL,V_FEEMODE;--  
  18. END WHILE; --  
  19.  

2.另一种db2标准循环格式(leave、iterate 用法):

  1. SET V_COUNT = LENGTH(V_VALIDAUTHCOMBOS);--  
  2.  
  3. SET V_INDEX = 0;--  
  4.  
  5. AUTHLOOP:  
  6. LOOP  
  7.       IF V_INDEX >= V_COUNT THEN  
  8. LEAVE AUTHLOOP;--相当于break  
  9.       END IF;--  
  10. ....  
  11.       SET V_INDEXV_INDEX = V_INDEX + 1;--  
  12.       .......  
  13.       IF 条件 THEN  
  14.      ITERATE AUTHLOOP;-- 相当于continue  
  15.       END IF;--  
  16. END LOOP;--  

3.截取字符串的循环(设V_TEMP=‘CB1001|CB1002|CB1003|’):

  1. SET V_LENGTH = LENGTH(V_TEMP);  
  2.     WHILE V_LENGTH>0 DO   
  3. SET V_POS = POSSTR(V_TEMP,'|');  
  4. SET V_CURRENT_BSN = SUBSTR( V_TEMP, 1, V_POS-1 );  
  5. SET V_TEMP = SUBSTR( V_TEMP, V_POS+1 );  
  6. SET V_LENGTH = LENGTH(V_TEMP);   
  7. --最后一个字段,不再截取  
  8. SET V_BSNTYPE = V_CURRENT_BSN;  
  9.     END WHILE;    

4.游标循环(不用open 游标):

  1. DROP PROCEDURE TESTFOR;  
  2.     CREATE PROCEDURE TESTFOR()  
  3.     LANGUAGE SQL  
  4.     BEGIN  
  5.     DECLARE V_TEMP1 VARCHAR(2);  
  6.     DECLARE V_TEMP2 VARCHAR(70);  
  7.     FOR V1 AS CURSOR1 CURSOR FOR  
  8. SELECT STUDENT_ID AS TEMP1,STUDENT_NAME AS TEMP2 FROM STUDENT  
  9.     DO   
  10. DELETE FROM STUDENT WHERE STUDENT_ID = TEMP1;  
  11. SET V_TEMP1 = TEMP1;  
  12. SET V_TEMP2 = TEMP2;  
  13.     END FOR;  
  14.     COMMIT;  
  15.     END; 

上一篇: DB2日期时间的基础知识 下一篇: DB2删除表
发表评论
用户名: 匿名