PLSQL跳出嵌套循环的小例子

转自:http://www.cnblogs.com/gaojian/archive/2012/11/13/2768455.html

DECLARE
   v_cnt NUMBER:=0;
   v_out_ext BOOLEAN:=FALSE;
   v_in_ext  BOOLEAN:=FALSE;
BEGIN
   <<Outer_loop>>
   LOOP

     EXIT WHEN v_cnt>20;

     <<Inner_loop>>
     LOOP
         dbms_output.put_line(v_cnt);
         v_cnt:=v_cnt+1;

         IF v_cnt>5 THEN
             v_in_ext:=TRUE;
         END IF;

         EXIT Outer_loop WHEN (v_in_ext = TRUE);         
     END LOOP; 
     dbms_output.put_line('++++++++++++++++++++');
   END LOOP;
END;

运行结果:

anonymous block completed
0
1
2
3
4
5

如果改成跳出内部循环:

DECLARE
   v_cnt NUMBER:=0;
   v_out_ext BOOLEAN:=FALSE;
   v_in_ext  BOOLEAN:=FALSE;
BEGIN
   <<Outer_loop>>
   LOOP

     EXIT WHEN v_cnt>20;

     <<Inner_loop>>
     LOOP
         dbms_output.put_line(v_cnt);
         v_cnt:=v_cnt+1;

         IF v_cnt>5 THEN
             v_in_ext:=TRUE;
         END IF;

         EXIT Inner_loop WHEN (v_in_ext = TRUE);         
     END LOOP; 
     dbms_output.put_line('++++++++++++++++++++');
   END LOOP;
END;

运行结果:

anonymous block completed
0
1
2
3
4
5
++++++++++++++++++++
6
++++++++++++++++++++
7
++++++++++++++++++++
8
++++++++++++++++++++
9
++++++++++++++++++++
10
++++++++++++++++++++
11
++++++++++++++++++++
12
++++++++++++++++++++
13
++++++++++++++++++++
14
++++++++++++++++++++
15
++++++++++++++++++++
16
++++++++++++++++++++
17
++++++++++++++++++++
18
++++++++++++++++++++
19
++++++++++++++++++++
20
++++++++++++++++++++
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PL/SQL中,可以使用游标嵌套传递参数来执行嵌套的SQL查询。以下是一个示例,展示了如何在PL/SQL中使用游标嵌套传递参数的SQL查询: ```sql DECLARE -- 声明外部游标变量和参数 CURSOR outer_cursor(p_parameter1 VARCHAR2, p_parameter2 NUMBER) IS SELECT column1, column2 FROM table1 WHERE condition1 = p_parameter1; -- 声明内部游标变量和参数 CURSOR inner_cursor(p_parameter3 VARCHAR2) IS SELECT column3 FROM table2 WHERE condition2 = p_parameter3; -- 声明变量来存储游标结果 var_column1 table1.column1%TYPE; var_column2 table1.column2%TYPE; var_column3 table2.column3%TYPE; BEGIN -- 打开外部游标 OPEN outer_cursor('value1', 123); -- 循环遍历外部游标结果 LOOP -- 从外部游标中获取数据到变量中 FETCH outer_cursor INTO var_column1, var_column2; -- 判断是否还有数据 EXIT WHEN outer_cursor%NOTFOUND; -- 在这里可以对获取到的数据进行处理 -- 可以使用 var_column1 和 var_column2 进行操作 -- 打开内部游标,并传递参数 OPEN inner_cursor('value2'); -- 循环遍历内部游标结果 LOOP -- 从内部游标中获取数据到变量中 FETCH inner_cursor INTO var_column3; -- 判断是否还有数据 EXIT WHEN inner_cursor%NOTFOUND; -- 在这里可以对获取到的数据进行处理 -- 可以使用 var_column3 进行操作 -- 输出数据 DBMS_OUTPUT.PUT_LINE('Column1: ' || var_column1 || ', Column2: ' || var_column2 || ', Column3: ' || var_column3); END LOOP; -- 关闭内部游标 CLOSE inner_cursor; END LOOP; -- 关闭外部游标 CLOSE outer_cursor; END; ``` 在上面的示例中,外部游标 `outer_cursor` 接受两个参数 `p_parameter1` 和 `p_parameter2`,内部游标 `inner_cursor` 接受一个参数 `p_parameter3`。您需要根据实际情况修改游标的查询语句和参数值,并根据需要对获取到的数据进行处理。 请注意,在嵌套游标中,内部游标的打开和关闭操作位于外部游标的循环内部。这样可以在外部游标的每次迭代中执行内部游标的查询。 希望以上示例对您有所帮助!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值