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
的下一次迴圈
相關文章
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- oracle儲存過程書寫格式Oracle儲存過程
- 【Oracle】儲存過程中將動態SQL的多行結果進行迴圈遍歷Oracle儲存過程SQL
- oracle的儲存過程Oracle儲存過程
- MYSQL儲存過程-練習3 repeat迴圈MySql儲存過程
- MYSQL儲存過程-練習4 loop迴圈MySql儲存過程OOP
- Oracle儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- Mysql儲存過程 變數,條件,迴圈語句用法MySql儲存過程變數
- 視訊課程-如何跳出forEach迴圈
- 跳出多重for迴圈
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- JavaScript中更好的迴圈寫法大全JavaScript
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- MySQL的寫入資料儲存過程MySql儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- jsp中呼叫儲存過程JS儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- JavaScript跳出for迴圈語句JavaScript
- 關於如何跳出迴圈?
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- Java Lambda表示式forEach無法跳出迴圈的解決思路Java
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- matlab 迴圈中使用的儲存資料方法 #更新中Matlab
- Q&A:在SQL Server 2005中編寫儲存過程RVSQLServer儲存過程
- 重學JS(八)—— 跳出迴圈JS
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程