PL/SQL goto語句

PL/SQL編程語言中的GOTO語句在同一副程式中提供從GOTO到標記語句的無條件跳轉。

注意 - 在任何編程語言中不推薦使用GOTO語句,因為它難以追蹤程式的控制流程,使程式難以理解和難以修改。 任何使用GOTO的程式都可以重寫,以便將GOTO語句替換成其他語句。

語法

PL/SQL中GOTO語句的語法如下:

GOTO label;
..
..
<< label >>
statement;

流程圖

例子

有關goto語句的使用示例,請參考以下代碼實現 -

SET SERVEROUTPUT ON SIZE 99999;
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;
/

當上述代碼在SQLPlus提示符下執行時,它會產生以下結果 -

GOTO語句局限性

PL/SQL中的GOTO語具有以下局限性 -

  • GOTO語句不能分支到IF語句,CASE語句,LOOP語句或子塊中。
  • GOTO語句不能從一個IF語句子句分支到另一個IF語句,或從一個CASE語句的WHEN子句分支到另一個。
  • GOTO語句不能從外部塊分支到子塊(即,內部BEGIN-END塊)。
  • GOTO語句不能分支出副程式。要儘早結束副程式,請使用RETURN語句或將GOTO分支到副程式結束之前的某個地方。
  • GOTO語句不能從異常處理程式分支回當前的BEGIN-END塊。 但是,GOTO語句可以從異常處理程式分支到一個封閉的塊中。

上一篇: PL/SQL迴圈 下一篇: PL/SQL字串