GOTO语句

语法:

goto ::=

参数:

label 标号名

说明:

执行流程跳到标签所指的块或者语句的位置。

Goto的目的标签必须是可执行语句或者块。Goto语句不能从外部跳进if语句,循环语句或者块。如果想跳到一个没有可执行语句的位置,可以在那里增加一个带标签的NULL语句。

Goto语句可以跳到当前块的其他位置,也可以跳到包含着此块的外层块中。从一个块的exception当中,可以跳到外层块的正常流程中,但不能跳到本块的正常流程。

存储过程中不能出现同名标签。

从外部跳进一个块的exception部分。在exception块中,一种异常匹配上之后,不可以跳到另外一种异常处理之中。

示例:GOTO语句

--清理环境
DROP PROCEDURE proc;

CREATE OR REPLACE PROCEDURE proc AS
DECLARE
    i int;
BEGIN
    i := 0;
    <<label>>
        i := i+1;
    BEGIN
        IF i>0 AND i<10 THEN 
            dbms_output.put_line(i);
            i := i+1;        
            Goto label; 
        END IF;
    END;
END;

/

EXEC proc;
1
3
5
7
9
--删除
DROP PROCEDURE proc;