oracle中continue的作用,Oracle 10g PL / SQL中的“CONTINUE”关键字

您可以使用goto和标签来模拟继续。

DECLARE done BOOLEAN; BEGIN FOR i IN 1..50 LOOP IF done THEN GOTO end_loop; END IF; <> -- not allowed unless an executable statement follows NULL; -- add NULL statement to avoid error END LOOP; -- raises an error without the previous NULL END;

虽然有点复杂,只是一个假的,你可以这样使用exception:

DECLARE i NUMBER :=0; my_ex exception; BEGIN FOR i IN 1..10 LOOP BEGIN IF i = 5 THEN raise my_ex; END IF; DBMS_OUTPUT.PUT_LINE (i); EXCEPTION WHEN my_ex THEN NULL; END; END LOOP; END;

事实上,PL SQL确实有一些东西可以取代CONTINUE。 你所要做的就是给循环添加一个标签(一个名字):

declare i integer; begin i := 0; <>loop i := i + 1; if i <= 3 then goto My_Small_Loop; end if; -- => means continue exit; end loop; end;

它在10g中不可用,但它是11G中的一项新function

为了将来的search,在oracle 11g中,他们添加了一个continue语句,可以像这样使用:

SQL> BEGIN 2 FOR i IN 1 .. 5 LOOP 3 IF i IN (2,4) THEN 4 CONTINUE; 5 END IF; 6 DBMS_OUTPUT.PUT_LINE('Reached on line ' || TO_CHAR(i)); 7 END LOOP; 8 END; 9 / Reached on line 1 Reached on line 3 Reached on line 5 PL/SQL procedure successfully completed.

你可以将IF重构成一个函数,在适当的时候返回(如果有必要的话)。 然后控制stream程将在正确的地方在循环中拾取。

那有意义吗?

不完全优雅,但很简单:

DECLARE done BOOLEAN; BEGIN FOR i IN 1..50 LOOP IF done THEN NULL; ELSE ; END IF; END LOOP; END;

在Oracle中,有一个类似的语句叫做EXIT,它可以退出一个循环或一个函数/过程(如果没有循环退出)。 你可以添加一个WHEN来检查一些条件。

你可以重写上面的例子,如下所示:

DECLARE done BOOLEAN; BEGIN FOR i IN 1..50 LOOP EXIT WHEN done; END LOOP; END;

如果你想深入一些嵌套的循环和逻辑,这可能是不够的,但是比GOTO和NULL更清晰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值