7-7 PL/SQL GOTO語法範例

在GOTO語法提供無條件跳轉到在同一個子程序的GOTO標簽的語法。
注意:GOTO語法是不建議使用在任何Program,因為它使得程序難以跟蹤控製流程,使程序難以理解,難以修改。如果使用GOTO的任何程序可以改寫,就儘量不要使用GOTO語法。
語法:
在PL/ SQL一個GOTO語法的語法如下:
GOTO label;
..
..
<< label >>
Statement;

流程圖:
範例:
DECLARE
  a number(2) := 10;
BEGIN
  <<loopstart>>
  -- while loop execution
  WHILE a < 20 LOOP
  dbms_output.put_line ('value of a: ' || a);
  a := a + 1;
  IF a = 15 THEN
     a := a + 1;
     GOTO loopstart;
  END IF;
  END LOOP;
END;
/

產生了以下結果:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19
PL/SQL procedure successfully completed.

使用GOTO語法的限制
PL/SQL GOTO語法強加以下限制:
  • goto語法不能跳轉到IF語法,CASE語法,循環語法或子區塊。
  • goto語法不能從另一個IF語法子句到另一個或從一個CASE語法WHEN子句到另一個。
  • goto語法不能從外部塊分支成子區塊(即一個內BEGIN-END塊)。
  • goto語法不能分支出來一個子程序。提前結束子程序,要麼使用RETURN語法或子程序結束前在正確的GOTO分支的地方。
  • goto語法不能從一個異常處理分支回到當前BEGIN-END塊。但是,GOTO語法可以從一個異常處理程序跳轉到一個結束區塊。

沒有留言:

張貼留言