EXIT语句

语法:

exit ::=

参数:

label 标号名

boolean_expression 布尔表达式

说明:

退出一个循环(LOOP/ WHILE/ FOR)。

如果EXIT语句没有给出标签label,那么退出最内层的循环,然后执行跟在END LOOP后面的语句。如果给出标签,那么必须是当前或更高层的嵌套循环块的标签。然后该块就会终止,而控制落到对应循环END语句后面的语句上。

如果有WHEN子句,那么仅当条件为真时退出循环。

示例:EXIT语句

--清理环境
DROP PROCEDURE proc1;
DROP PROCEDURE proc2;

CREATE OR REPLACE PROCEDURE proc1 AS
DECLARE
    cnt INT;
BEGIN
    cnt := 0;
    LOOP
        dbms_output.put_line(cnt);
        cnt := cnt + 1;
    EXIT WHEN cnt > 4; 
END LOOP;
END;

/
EXEC proc1;
0
1
2
3
4

CREATE OR REPLACE PROCEDURE proc2 AS
BEGIN
<<LOOP1>>
LOOP
    dbms_output.put_line('LOOP1');
    <<LOOP2>>
    LOOP
        dbms_output.put_line('LOOP2');
    EXIT LOOP1;
    END LOOP;
END LOOP;
END;

/
EXEC proc2;
LOOP1
LOOP2
--删除
DROP PROCEDURE proc1;
DROP PROCEDURE proc2;