PL/SQL中类似break 和 continue的实现

在如C/C++,Java编程语言的循环控制结构中,都有break和continue关键字可以灵活的控制循环体如何结束和跳出本次循环。但是PL/SQL本身是不具备这种关键字的,但是却可以利用一些方法实现类似的功能。
PL/SQL中的循环控制结构常用的有如下几种:
  1. LOOP sql statement...EXIT WHEN CONDITION ... END LOOP;
  2. WHILE CONDITION LOOP sql statement....  END LOOP;
  3. FOR loop_index IN [REVERSE] lowest_number..highest_number LOOP sql statement... END LOOP;
示例:我们有一张表EMP,表中内容如下:
         
现在我们要利用循环将表中的内容打印到屏幕上(利用dbms_output.putline()),条件是:ID为10的记录不要显示出来。本例中我们使用FOR循环结合隐式游标的方法进行循环,SQL代码如下:
declare
  v_str varchar2(1000);

begin
  for x in (select * from emp) loop
    select x.id || ' ' || x.name || ' ' || x.salary || ' ' || x.xman_id
      into v_str from dual;
    if x.id = 10 then
      dbms_output.put_line('loop is break');
      goto mylabel;
    end if;
    dbms_output.put_line(v_str);
    <<mylabel>>
    null;
  end loop;
end;

输出结果:
0 AA 3000 000
2 ADSGF 3200 002
3 CC 2900 003
4 DD 4200 004
5 EE 3400 005
6 FF 3600 006
7 GG 3600 007
8 HH 3300 008
9 II 5000 009
loop is break
11 KK 6400 011
13 AB 5000 013

可以看出,我们利用了<<mylabel>> 和GOTO语句实现了类似continue的跳转,如果想要类似break的功能,exit关键字就可以实现,这里就不在敖述了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值