鍍金池/ 教程/ 數(shù)據(jù)庫/ PL/SQL GOTO語句
PL/SQL記錄
PL/SQL基本語法
PL/SQL集合
PL/SQL包
PL/SQL關系運算符
PL/SQL比較運算符
PL/SQL條件控制
PL/SQL字符串
PL/SQL算術運算符
PL/SQL變量
PL/SQL IF-THEN-ELSIF語句
PL/SQL函數(shù)
PL/SQL異常
PL/SQL FOR循環(huán)語句
PL/SQL日期及時間
PL/SQL EXIT語句
PL/SQL DBMS輸出
PL/SQL過程
PL/SQL CONTINUE語句
PL/SQL數(shù)組
PL/SQL嵌套IF-THEN-ELSE語句
PL/SQL事務
PL/SQL CASE語句
PL/SQL IF-THEN語句
PL/SQL GOTO語句
PL/SQL運算符優(yōu)先級
PL/SQL觸發(fā)器
PL/SQL運算符
PL/SQL教程
PL/SQL WHILE循環(huán)語句
PL/SQL面向?qū)ο?/span>
PL/SQL循環(huán)
PL/SQL邏輯運算符
PL/SQL IF-THEN-ELSE語句
PL/SQL數(shù)據(jù)類型
PL/SQL環(huán)境安裝設置
PL/SQL游標
PL/SQL基本循環(huán)語句
PL/SQL搜索CASE語句
PL/SQL常量和文字
PL/SQL嵌套循環(huán)

PL/SQL GOTO語句

在PL/SQL編程語言的GOTO語句提供無條件跳轉(zhuǎn)到在同一個子程序的GOTO標簽的語句。

注意:GOTO語句是不建議使用在任何編程語言,因為它使得程序難以跟蹤控制流程,使程序難以理解,難以修改。如果使用GOTO的任何程序可以改寫,就盡量不要使用GOTO語句。

語法:

在PL/ SQL一個GOTO語句的語法如下:

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

流程圖:

PL/SQL goto 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提示符執(zhí)行時,它產(chǎn)生了以下結(jié)果:

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語句不能跳轉(zhuǎn)到IF語句,CASE語句,循環(huán)語句或子塊。

  • goto語句不能從一個分支IF語句子句到另一個或從一個CASE語句WHEN子句到另一個。

  • goto語句不能從外部塊分支成子塊(即一個內(nèi)BEGIN-END塊)。

  • goto語句不能分支出來一個子程序。提前結(jié)束子程序,要么使用RETURN語句或子程序結(jié)束前在正確的GOTO分支的地方。

  • goto語句不能從一個異常處理分支回到當前BEGIN-END塊。但是,GOTO語句可以從一個異常處理程序跳轉(zhuǎn)到一個封閉塊。