GOTO語句在PL/SQL中的應用
GOTO label;
這裡label是在PL/SQL塊中定義的標籤.標籤是用雙箭頭括號括起來的.當執行GOTO語句的時候,控制會立即轉到由標籤標識的語句.[@more@]
例如,我們可以按照下面的方式實現前面的迴圈示例.
Declare
vn:=1;
begin
loop
insert into temptable
values(vn,'loopcount');
vn := vn + 1;
if vn > 50 then
GOTO nextloop;
end if;
end loop;
<
insert into temptable(char_col)
values('done!');
end;
一:對於GOTO的限制
1:PL/SQL對於GOTO的使用有一些限制.對於塊,迴圈或者IF語句而言,想要從外層跳轉到內層是非法的.下面就是一個非法的例子.
BEGIN
GOTO 1_innerBlock;
BEGIN
......
<<1_innerBlock;>>
......
END;
GOTO 1_INSIDEIF;
if x > 3 then
...
<<1_INSIDEIF>>
insert into ....
end if;
end if;
如果這樣的寫法是合法的,那麼甚至儘管IF條件沒有求值為TRUE,IF語句中的語句也將被執行.在前面的例子中,當X =2 時,INSERT 語句可能要被執行.
2:使用GOTO語句從一個IF子句跳轉到另一個子句中也是非法的.
BEGIN
IF X >3 THEN
...
GOTO 1_nextcondition;
ELSE
<<1_nextcondition>>
....
END IF;
END;
3:最後,從一個異常處理塊內部跳轉到當前塊是非法的.
begin
<<1_insert>>
insert into....;
exception when others then
GOTO 1_insert;
end;
二.為迴圈設定標籤
迴圈本身是可以被設計標籤的.如果進行了設定,那麼可以在EXIT語句中使用該標籤指明要退出哪個迴圈.例如:
<<1_outer>>
for v_outerindex in 1..50 loop
...
<<1_inner>>
for v_innerindex in 2..10 loop
...
if v_outerindex > 40 then
exit 1_outer;
end if;
end loop 1_inner;
end loop 1_outer;
如果為迴圈設定了標籤,那麼可以在END LOOP 語句的後面包含該標籤名,正如上面的例子中所示的那樣.
三.GOTO語句的使用指南
在使用GOTO的時候請一定小心.不必要的GOTO語句會產生出"通心粉程式碼",這是一些無目的的跳來跳去的程式碼,很難理解和進行維護.
幾乎所有使用GOTO的情況都可以使用其他的PL/SQL控制結構,例如迴圈或者條件結構,來重新進行編寫.也可以使用異常處理來退出
深層巢狀的迴圈,而不用直接跳轉到結尾.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-904114/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C語言goto語句以及用goto語句構成迴圈C語言Go
- PL/SQL與DDL語句SQL
- 利用pl/sql執行本地的sql檔案中的sql語句SQL
- SQL語句在oracle資料庫中的初級應用(上)SQLOracle資料庫
- PL/SQL 動態sql語句例SQL
- goto語句簡整Go
- C++ goto語句C++Go
- goto 語法在 PHP 中的使用GoPHP
- PL/SQL 條件控制語句SQL
- PL/SQL迴圈控制語句SQL
- SQL中查詢語句內的相關應用SQL
- [20240607]PL/SQL中sql語句的註解.txtSQL
- 6. Oracle開發和應用—6.4. PL/SQL語法—6.4.1. 語句塊OracleSQL
- SQL Server FOR XML PATH 語句的應用SQLServerXML
- 6. Oracle開發和應用—6.4. PL/SQL語法—6.4.4. 條件語句(分支語句)OracleSQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- 臭名遠揚之 goto 語句Go
- 關於在SAP中SQL語句的效能SQL
- Python3 goto 語句的使用PythonGo
- PL/SQL Developer中輸入SQL語句時如何自動提示欄位SQLDeveloper
- 在事務中執行sql語句SQL
- 在nhibernate中執行SQL語句SQL
- PLSQL Language Referenc-PL/SQL控制語句-順序控制語句-NULLSQLNull
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUESQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-EXIT WHENSQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-基本迴圈(EXIT語句)SQL
- sql server 中的一些實用的sql語句SQLServer
- 實用的SQL語句~!SQL
- 6.4. PL/SQL語法——6.4.5. 迴圈語句SQL
- sql 中的with 語句使用SQL
- PL/SQL Case when應用SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-WHILE迴圈SQLWhile
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUE WHENSQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-IF THEN ELSeIFSQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-IF THEN ELSESQL
- PLSQL Language Referenc-4PL/SQL控制語句-條件選擇語句-IF THENSQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL