Oracle儲存過程中跳出迴圈的寫法
記錄exit
和return
的用法
1:exit
用來跳出迴圈
loop
IF V_KBP IS NULL THEN
EXIT;
END IF;
end loop;
2:return
跳出儲存過程
loop
IF V_KBP IS NULL THEN
return;
END IF;
end loop;
3:跳出loop
一次迴圈
oracle 11g已提供continue
;
oracle 10g及以下,使用goto
來替代,例如
SQL> set serveroutput on;
SQL> declare
2 begin
3 for i in 1..10 loop
4 if mod(i,2)=0 then
5 goto next;
6 end if;
7 dbms_output.put_line(i);
8 <<next>>
9 null;
10 end loop;
11 end;
12 /
注意:<<next>>
標籤後的null
;語句不可少,因為goto
標籤後必須緊接著一個執行語句
4:Oracle迴圈中的EXIT
、RETURN
、CONTINUE
解密
注:本文來源於 《 Oracle迴圈中的EXIT
、RETURN
、CONTINUE
解密 》
有時候編寫Oracle中用遊標等資訊去迴圈處理邏輯的時候,對EXIT、RETURN、CONTINUE
很容易搞混淆,網上搜了資料也不是很清楚,所以本人自己寫了一小段程式碼測試了這三種用法。案例程式碼如下:
PROCEDURE P_TASK IS
BEGIN
FOR MY_CU IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
FOR MY IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
IF MY_CU.SPBH = 'AAA' THEN
RETURN;
--exit;
--continue;
ELSIF MY.SPBH = 'BBB' THEN
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('123', '123');
ELSE
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('222', '222');
END IF;
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('333', '333');
END LOOP;
END LOOP;
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('444', '444');
END P_TASK;
案例測試得到結果如下(分析的結果中注意本次迴圈和本迴圈的區別。本次迴圈是本迴圈執行的這次迴圈):
第一種:使用RETURN
的時候,直接跳出儲存過程或者函式
第二種:使用EXIT
的時候,跳出本迴圈轉而執行本迴圈的上一級迴圈的下一次迴圈。就此案例而言MY_CU.SPBH = 'AAA'
為真的時候,直接跳出MY迴圈轉而去執行MY_CU
的下一次迴圈
第三種:使用CONTINUE
的時候,本次迴圈後面的程式碼部分不再執行,轉而執行本迴圈的下一次迴圈。就此案例而言MY_CU.SPBH = 'AAA'
為真的時候,後面的程式碼不執行,繼續MY
的下一次迴圈
相關文章
- SQL儲存過程迴圈SQL儲存過程
- 關於在Oracle儲存過程內使用迴圈及select的其他寫法。Oracle儲存過程
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- oracle儲存過程書寫格式Oracle儲存過程
- Oracle儲存過程基本語法Oracle儲存過程
- oracle儲存過程中的陣列Oracle儲存過程陣列
- 在儲存過程中寫truncate table儲存過程
- oracle的儲存過程Oracle儲存過程
- java中呼叫ORACLE儲存過程JavaOracle儲存過程
- ORACLE儲存過程中建立子過程的測試!Oracle儲存過程
- Mysql儲存過程 變數,條件,迴圈語句用法MySql儲存過程變數
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- Oracle儲存過程Oracle儲存過程
- 儲存過程語法儲存過程
- Oracle 儲存過程中的DDL語句Oracle儲存過程
- oracle 儲存過程中螢幕列印Oracle儲存過程
- Jsp中呼叫Oracle儲存過程JSOracle儲存過程
- oracle的儲存過程格式Oracle儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- java跳出多重迴圈Java
- 編寫JAVA儲存過程Java儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- oracle plsql儲存過程OracleSQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- 儲存過程基本語法儲存過程
- 遞迴儲存過程中使用cursor遞迴儲存過程
- 儲存過程中巢狀儲存過程的變數執行方式儲存過程巢狀變數
- ORACLE 儲存過程中的Authid Current_UserOracle儲存過程
- Oracle中定義package以及儲存過程的使用OraclePackage儲存過程
- ORACLE中儲存過程的許可權問題Oracle儲存過程
- JavaScript跳出for迴圈語句JavaScript
- sql server儲存過程語法SQLServer儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程