📜  PL / SQL goto

📅  最后修改于: 2020-11-12 01:54:41             🧑  作者: Mango

PL / SQL GOTO语句

在PL / SQL中,GOTO语句使您能够无条件地从GOTO跳转到PL / SQL块的同一子程序中的特定可执行语句标签。

此处的标签声明包含封装在<< >>符号中的label_name,并且必须紧随其后至少执行一条语句。

句法:

GOTO label_name;

此处的标签声明包含封装在<< >>符号中的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语句子句转移到另一个,或从一个CASE语句WHEN子句转移到另一个。
  • 无法将控制从外部块传送到子块。
  • 无法将控制从子程序中移出。
  • 无法将控制权转移到异常处理程序中。