db2普通循环结构

while循环

  1. while 条件
  2. do
  3. 循环体
  4. end while;

LOOP循环

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

REPEAT循环

  1. REPEAT
  2. SQL statements;
  3. UNTIL condition – 退出条件
  4. END REPEAT

FOR 循环

  1. FOR loop_name AS
  2. SELECT … FROM
  3. DO
  4. SQL statements;
  5. END FOR;

循环实例:

loop循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
loop
  i:=i+1;
  dbms_output.put_line(i);
  if i>5 then
    exit;
  end if;
end loop;
end pro_test_loop;

while循环:
create or replace procedure pro_test_while is
i number;
begin
i:=0;
while i<5 loop
  i:=i+1;
  dbms_output.put_line(i);
end loop;
end pro_test_while;

for循环1:
create or replace procedure pro_test_for is
i number;
begin
i:=0;
for i in 1..5 loop
  dbms_output.put_line(i);
end loop;
end pro_test_for;

for循环2:
create or replace procedure pro_test_cursor is
userRow t_user%rowtype;
cursor userRows is
select * from t_user;
begin
for userRow in userRows loop
    dbms_output.put_line(userRow.Id||','||userRow.Name||','||userRows%rowcount);
end loop;
end pro_test_cursor;

游标循环使用:

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

DECLARE CUR_FEESET CURSOR WITH RETURN TO CALLER FOR (

SELECT

--

FROM 表

WHERE 条件

);

OPEN CUR_FEESET;--得到游标

--得到游标记录数

SELECT

count(CIF_CSTNO)

into v_count

FROM CB_CSTINF A ,CB_CSTBSNINF B

WHERE A.CIF_STT<>'3' AND A.CIF_CSTNO = B.CBI_CSTNO ; --

FETCH CUR_FEESET INTO V_CSTNO,V_FEECODE,V_CSTLEVEL,V_FEEMODE;--

WHILE V_COUNT>0 DO

     ……..

FETCH CUR_FEESET INTO V_CSTNO,V_FEECODE,V_CSTLEVEL,V_FEEMODE;--

END WHILE; --

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

SET V_COUNT = LENGTH(V_VALIDAUTHCOMBOS);--

SET V_INDEX = 0;--

AUTHLOOP:

LOOP

IF V_INDEX >= V_COUNT THEN

LEAVE AUTHLOOP;--相当于break

END IF;--

....

SET V_INDEX = V_INDEX + 1;--

.......

IF 条件 THEN

ITERATE AUTHLOOP;-- 相当于continue

END IF;--

END LOOP;--

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

SET V_LENGTH = LENGTH(V_TEMP);

WHILE V_LENGTH>0 DO

SET V_POS = POSSTR(V_TEMP,'|');

SET V_CURRENT_BSN = SUBSTR( V_TEMP, 1, V_POS-1 );

SET V_TEMP = SUBSTR( V_TEMP, V_POS+1 );

SET V_LENGTH = LENGTH(V_TEMP);

--最后一个字段,不再截取

SET V_BSNTYPE = V_CURRENT_BSN;

END WHILE;

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

DROP PROCEDURE TESTFOR;

CREATE PROCEDURE TESTFOR()

LANGUAGE SQL

BEGIN

DECLARE V_TEMP1 VARCHAR(2);

DECLARE V_TEMP2 VARCHAR(70);

FOR V1 AS CURSOR1 CURSOR FOR

SELECT STUDENT_ID AS TEMP1,STUDENT_NAME AS TEMP2 FROM STUDENT

DO

DELETE FROM STUDENT WHERE STUDENT_ID = TEMP1;

SET V_TEMP1 = TEMP1;

SET V_TEMP2 = TEMP2;

END FOR;

COMMIT;

END;

db2循环的更多相关文章

  1. DB2中循环日期跑数据

    1.数据库版本: 2.具体实现方式: ),)) /*************************************************************************** ...

  2. DB2(Procedure)存储过程遍历循环!

    有时候一些复杂的业务逻辑将要通过存储过程的循环语句进行处理;以下列出2种DB2存储过程的循环语句,方便以后的查看并使用! 推荐第一种方式的使用,最大的优点就是比较直观;在需要操作很多字段的情况下,不需 ...

  3. 你搞懂 ORACLE、 SQLSERVER、MYSQL与DB2的区别了吗

    ORACLE. SQLSERVER.MYSQL与DB2的区别--平台性:    Oracle.MYSQL与DB2可在所有主流平台上运行:    SQL Server只能在Windows下运行: --安 ...

  4. DB2错误码信息

    00 完全成功完成 表 3  01 警告 表 4  02 无数据 表 5  07 动态 SQL 错误 表 6  08 连接异常 表 7  09 触发操作异常 表 8  0A 功能部件不受支持 表 9  ...

  5. db2基础

    DB2知识文档 一.db2 基础 基本语法 注释:"--"(两个减号) 字符串连接:"||" 如set msg='aaaa'||'bbbb',则msg为'aaa ...

  6. db2 游标使用

    游标一般用来迭代结果集中的行 为了在一个过程中处理一个游标的结果,需要做以下事情: 在存储过程块的开头部分 DECLARE 游标. 打开该游标. 将游标的结果取出到之前已声明的本地变量中(隐式游标处理 ...

  7. db2存储过程

    一. 使用存储过程的好处 1. 减少客户机与服务器之间的网络使用率,以及数据库锁定保持的时间 应用程序通常在执行每个SQL语句都要跨网络两次,存储过程可以将SQL语句集中在一起, 从而使得对于每一组S ...

  8. DB2 表空间和缓冲池

    简介 对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑.在本文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池.表空间和缓冲池的设计 ...

  9. DB2存储过程语法规则

    如何声明一个存储过程CREATE PROCEDURE 存储过程名(IN 输入变量名 输入变量类型,OUT 输出变量名 输出变量类型)紧跟其后的是存储过程属性列表            常用的有:LAN ...

随机推荐

  1. 饿了么基于Vue2.0的通用组件开发之路(分享会记录)

    Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网 ...

  2. C++11智能指针读书笔记;

    智能指针是一个类对象,而非一个指针对象. 原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 它的一种通用实现 ...

  3. 如何方便的保存WinForm窗体控件的位置大小等等配置信息

    由于分辨率.屏幕主题.字体大小的不同,窗体显示效果在不同机器上不尽相同.窗体的弹性设计并不能满足多样的需求.为保证在各种情况下,能有满意的效果.窗体的多样显示方式能改变,并且保存.载入配置,显得很重要 ...

  4. NFC OMA 访问

    正常的OMA访问: 但基本上IC原厂都会提供NFC swp-sim这一块的访问,但关于NFC内部eSe的访问一般NFC服务商又会整一套出来,导致有两套独立的SmartcardSevice需要运行,但他 ...

  5. - > code vs 3038 3n+1问题(递归)

    3038 3n+1问题  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 白银 Silver 题解   题目描述 Description 3n+1问题是一个简单有趣而又没有解决的数 ...

  6. IOS-UIDynamic

    UIDynamic中的三个重要概念 Dynamic Animator:动画者,为动力学元素提供物理学相关的能力及动画,同时为这些元素提供相关的上下文,是动力学元素与底层iOS物理引擎之间的中介,将Be ...

  7. MVC Code First 当实体类发生变化时,如何自动更新数据库表

    下面做一个例子,Category是用户新建的一个实体类,然后添加一个字段,然后让数据库中的Category表也添加一个字段 1.Category.cs

  8. 基于SSM的租赁管理系统0.3_20161225_数据库设计

    数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...

  9. 让你的 Xcode8 继续使用插件

    发表于 2016-09-10   |   分类于 Tips   |   21条评论   |   阅读次数 8383 随着 iOS10 的正式版即将发布,Xcode8 GM 也在发布会后放出,本文不会涉 ...

  10. 测试css

    <h1>shell使用指南</h1> <h2>ZMODEM功能</h2> <pre><code>yum install lrzs ...