PL/SQL GOTO 语句
在 PL/SQL 中,GOTO 语句使您能够从 GOTO 跳转到同一子程序中的特定可执行语句标签的无条件跳转。
这里的标签声明包含在 << >> 符号中的 label_name,并且必须后跟至少一个要执行的语句。
语法:
GOTO label_name;
在这里,label声明包含在<< >>符号中的label_name,并且必须至少跟随一个要执行的语句。
GOTO label_name;
..
..
<>
Statement;
PL/SQL GOTO语句示例
让我们来看一个PL/SQL GOTO语句的例子。
DECLARE
a number(2) := 30;
BEGIN
<>
-- while loop execution
WHILE a < 50 LOOP
dbms_output.put_line ('value of a: ' || a);
a := a + 1;
IF a = 35 THEN
a := a + 1;
GOTO loopstart;
END IF;
END LOOP;
END;
/
在执行上述代码后,您将获得以下结果:
value of a: 30
value of a: 31
value of a: 32
value of a: 33
value of a: 34
value of a: 36
value of a: 37
value of a: 38
value of a: 39
value of a: 40
value of a: 41
value of a: 42
value of a: 43
value of a: 44
value of a: 45
value of a: 46
value of a: 47
value of a: 48
value of a: 49
Statement processed.
GOTO语句的限制
以下是对GOTO语句施加的一些限制的列表。
- 不能将控制转移到IF语句、CASE语句、LOOP语句或子块中。
- 不能从一个IF语句子句转移到另一个IF语句子句,也不能从一个CASE语句的WHEN子句转移到另一个WHEN子句。
- 不能从外部块转移到子块中。
- 不能从子程序中转移控制。
- 不能将控制转移到异常处理程序中。