PL/SQL GOTO语句
PL/SQL GOTO语句
在PL/SQL中,GOTO语句使您能够无条件地从GOTO跳转到相同子程序中的特定可执行语句标签。 PL/SQL块。
这里的标签声明包含封装在<<>>符号中的label_name,并且必须至少跟随一个语句才能执行。
语法:
此处为标签声明,其中包含封装在<<>>符号中的label_name,并且必须紧随其后至少执行一条语句。
GOTO label_name;
..
..
<<label_name>>
Statement;
PL/SQL GOTO语句示例
我们以PL/SQL GOTO语句示例为例。
DECLARE
a number(2) := 30;
BEGIN
<<loopstart>>
--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语句子句转移到另一个,或从一个CASE语句WHEN子句转移到另一个。
无法将控制权从外部块转移到子块。
无法将控制权移出子程序。
无法将控制权转移到异常处理程序中。