Oracle PL / SQL loop循环
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;
/
上面的代码生成以下结果: