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提示符下執行時,它會產生以下結果 -
PL/SQL中的GOTO語具有以下局限性 -
IF
語句,CASE
語句,LOOP
語句或子塊中。IF
語句子句分支到另一個IF
語句,或從一個CASE
語句的WHEN
子句分支到另一個。BEGIN-END
塊)。RETURN
語句或將GOTO
分支到子程式結束之前的某個地方。BEGIN-END
塊。 但是,GOTO語句可以從例外處理程式分支到一個封閉的塊中。