注:本文**於: 《 oracle儲存過程中跳出迴圈的寫法
》
記錄exit和return的用法
1 loop2if v_kbp is
null
then
3exit;
4end
if;5
end loop;
1 loop2if v_kbp is
null
then
3return;
4end
if;5
end loop;
oracle 11g已提供continue;注:本文**於 《 oracle迴圈中的exit、return、continue解密oracle 10g及以下,使用goto來替代,例如
1sql> 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很容易搞混淆,網上搜了資料也不是很清楚,所以本人自己寫了一小段**測試了這三種用法。案例**如下:1procedure 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...