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;