PL/SQL EXIT語句
在PL/SQL編程語言中,EXIT語句有以下兩種用法:
-
當循環中遇到EXIT語句循環立即終止,程序控制繼續下一個循環語句后面。
-
如果使用嵌套循環(即一個循環內的另一個循環),EXIT指令將停止最內層循環的執行,並開始執行的下一行代碼的程序段之后。
語法:
在PL/SQL EXIT語句的語法如下:
EXIT;
流程圖:

例如:
DECLARE a number(2) := 10; BEGIN -- while loop execution WHILE a < 20 LOOP dbms_output.put_line ('value of a: ' || a); a := a + 1; IF a > 15 THEN -- terminate the loop using the exit statement EXIT; END IF; END LOOP; END; /
當上述代碼在SQL提示符執行時,它產生了以下結果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 PL/SQL procedure successfully completed.
EXIT WHEN 語句
在EXIT-WHEN語句允許的條件下,在WHEN子句進行評估計算。如果條件為真,循環完成並控制立即傳遞到END LOOP語句。
以下是EXIT WHEN語句的兩個重要方面:
-
直到條件為true,EXIT-WHEN語句就像一個空語句,除了評估計算條件,並不會終止循環。
-
循環內部的語句必須更改條件的值。
示例:
PL/ SQL EXIT WHEN語句的語法如下:
EXIT WHEN condition;
EXIT WHEN語句使用EXIT語句條件代替條件語句 if-then 退出一樣
示例:
DECLARE a number(2) := 10; BEGIN -- while loop execution WHILE a < 20 LOOP dbms_output.put_line ('value of a: ' || a); a := a + 1; -- terminate the loop using the exit when statement EXIT WHEN a > 15; END LOOP; END; /
當上述代碼在SQL提示符執行時,它產生了以下結果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 PL/SQL procedure successfully completed.
PL/SQL CONTINUE語句
CONTINUE語句使循環跳過其身的其余部分,並立即重新測試其使用條件重申之前。換句話說,它會強制循環的下一次迭代發生,跳過其間的任何代碼。
語法:
continue語句的語法如下:
CONTINUE;
流程圖

例子:
DECLARE
a number(2) := 10; BEGIN -- while loop execution WHILE a < 20 LOOP dbms_output.put_line ('value of a: ' || a); a := a + 1; IF a = 15 THEN -- skip the loop using the CONTINUE statement a := a + 1; CONTINUE; END IF; END LOOP; END; /
當上述代碼在SQL提示符執行時,它產生了以下結果:
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.
PL/SQL GOTO語句
在PL/SQL編程語言的GOTO語句提供無條件跳轉到在同一個子程序的GOTO標簽的語句。
注意:GOTO語句是不建議使用在任何編程語言,因為它使得程序難以跟蹤控制流程,使程序難以理解,難以修改。如果使用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; /
當上述代碼在SQL提示符執行時,它產生了以下結果:
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語句可以從一個異常處理程序跳轉到一個封閉塊。