LOOP语句包含关键字LOOP和END LOOP之间的一系列语句,如下所示:
LOOP sequence_of_statements END LOOP;
执行语句序列,然后控制在循环顶部恢复。
我们可以在基本循环中使用CONTINUE和CONTINUE-WHEN语句。
要防止无限循环,必须使用EXIT或EXIT-WHEN语句。
EXIT语句
当遇到EXIT语句时,循环立即退出,并且控制传递到END LOOP之后的语句。
DECLARE x NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; IF x > 10 THEN EXIT; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE (' After loop: x = ' || TO_CHAR(x)); END; /
上面的代码生成以下结果:
EXIT-WHEN语句
遇到EXIT-WHEN语句时,将计算WHEN子句中的条件。
如果条件为真,则循环完成,控制传递到END LOOP之后的语句。
DECLARE x NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE ('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; EXIT WHEN x > 10; END LOOP; DBMS_OUTPUT.PUT_LINE ('After loop: x = ' || TO_CHAR(x)); END; /
上面的代码生成以下结果:
标记PL / SQL循环
循环可以标记。
可选标签(由双尖括号括起来的未声明标识符)必须出现在LOOP语句的开头。
标签名称也可以显示在LOOP语句的末尾。
使用任何形式的EXIT语句,您不仅可以退出当前循环,而且可以退出任何封闭循环。
DECLARE s PLS_INTEGER := 0; i PLS_INTEGER := 0; j PLS_INTEGER; BEGIN <<outer_loop>> LOOP i := i + 1; j := 0; <<inner_loop>> LOOP j := j + 1; s := s + i * j; EXIT inner_loop WHEN (j > 10); EXIT outer_loop WHEN ((i * j) > 25); END LOOP inner_loop; END LOOP outer_loop; DBMS_OUTPUT.PUT_LINE('The sum: ' || TO_CHAR(s)); END; /
上面的代码生成以下结果:
查看更多关于Oracle PL / SQL loop循环的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did225677