Oracle儲存過程中跳出迴圈的寫法

2021-09-07 17:55:29 字數 2015 閱讀 1033

注:本文**於: 《  oracle儲存過程中跳出迴圈的寫法

記錄exit和return的用法

1 loop

2if v_kbp is

null

then

3exit;

4end

if;5

end loop;

1 loop

2if v_kbp is

null

then

3return;

4end

if;5

end loop;

oracle 11g已提供continue;

oracle 10g及以下,使用goto來替代,例如

1

sql> set serveroutput on;

2sql> declare

3 2 begin

4 3 for i in 1..10 loop

5 4 if mod(i,2)=0 then

6 5 goto

next;

7 6 end

if;8 7 dbms_output.put_line(i);

9 8 <>

10 9 null;

11 10 end loop;

12 11 end;

13 12 /

14 注意:<>標籤後的null;語句不可少,因為goto標籤後必須緊接著乙個執行語句

注:本文**於 《  oracle迴圈中的exit、return、continue解密

有時候編寫oracle中用游標等資訊去迴圈處理邏輯的時候,對exit、return、continue很容易搞混淆,網上搜了資料也不是很清楚,所以本人自己寫了一小段**測試了這三種用法。案例**如下:

1

procedure p_task is

2begin

3for my_cu in (select spbh, spmch from fucm) loop

4for my in (select spbh, spmch from fucm) loop

5if my_cu.spbh = 'aaa' then

6return;

7--exit;

8--continue;

9 elsif my.spbh = 'bbb' then

10insert

into fucm_jg (spbh, spmch) values ('123', '123');

11else

12insert

into fucm_jg (spbh, spmch) values ('222', '222');

13end

if;14

insert

into fucm_jg (spbh, spmch) values ('333', '333');

15end loop;

16end loop;

17insert

into fucm_jg (spbh, spmch) values ('444', '444');

18end p_task;

案例測試得到結果如下(分析的結果中注意本次迴圈和本迴圈的區別。本次迴圈是本迴圈執行的這次迴圈):

第一種:使用return的時候,直接跳出儲存過程或者函式

第三種:使用continue的時候,本次迴圈後面的**部分不再執行,轉而執行本迴圈的下一次迴圈。就此案例而言my_cu.spbh = 'aaa'為真的時候,後面的**不執行,繼續my的下一次迴圈

Oracle儲存過程中跳出迴圈的寫法

記錄exit和return的用法 exit用來跳出迴圈 loop if v kbp is null then exit end if end loop return跳出儲存過程 loop if v kbp is null then return end if end loop 跳出loop 一次迴圈...

Oracle儲存過程中跳出迴圈的寫法

部落格分類 oracle 記錄exit和return的用法 exit用來跳出迴圈 loop if v kbp is null then exit end if end loop return跳出儲存過程 loop if v kbp is null then return end if end loo...

oracle學習 PL SQL 儲存過程中迴圈

pl spl 提供了3中不同型別的迴圈結構 例項 索引 loop counter從1開始,到10 結束,迴圈共執行10次 for loop counter in 1 10 loop 可執行語句.endloop 索引loop counter從10開始,到1結束,迴圈共執行10次 for loop co...