儲存過程 --- 6 --- 跳出迴圈
阿新 • • 發佈:2019-01-08
CREATE OR REPLACE PROCEDURE CXY_CCGC_TEST4_P AS x NUMBER; BEGIN --使用CONTINUE的時候,本次迴圈後面的程式碼部分不再執行,轉而執行本迴圈的下一次迴圈。 --可能由於oracle的版本問題而導致一些關鍵字不可以使用;在oracle11g中增加CONTINUE關鍵字 10g可以用GOTO來實現 --本人未使用11g,使用11g的朋友試一下 DBMS_OUTPUT.put_line('=============================================CONTINUE'); for i in 1..4 loop DBMS_OUTPUT.put_line('使用CONTINUE --- 第' || i || '次迴圈Start'); IF i = 3 THEN --CONTINUE; GOTO next; END IF; DBMS_OUTPUT.put_line('使用CONTINUE --- 第' || i || '次迴圈。。。執行中。。。'); <<next>> --goto跳轉點 DBMS_OUTPUT.put_line('使用CONTINUE --- 第' || i || '次迴圈End'); end loop; DBMS_OUTPUT.put_line('=============================================GOTO'); x:=1; <<repeat_loop>> --迴圈點 DBMS_OUTPUT.PUT_LINE('使用GOTO --- 第' || X || '次迴圈'); x:=x+1; IF X<=3 THEN GOTO repeat_loop; --當x的值小於9時,就goto到repeat_loop END IF; DBMS_OUTPUT.put_line('=============================================EXIT'); --使用EXIT的時候,跳出本迴圈。 for i in 1..3 loop DBMS_OUTPUT.put_line('使用EXIT --- 第一層 第' || i || '次迴圈'); for j in 1..10 loop DBMS_OUTPUT.put_line('使用EXIT --- 第二層 第' || j || '次迴圈'); IF j = 2 THEN EXIT;--跳出本迴圈轉而執行本迴圈的上一級迴圈的下一次迴圈 END IF; end loop; --oracle中取餘是用函式mod(numer1,number2), IF mod(i, 2) = 0 THEN EXIT;--跳出本迴圈 END IF; end loop; DBMS_OUTPUT.put_line('=============================================RETURN'); --使用RETURN的時候,直接跳出儲存過程或者函式。 for i in 1..6 loop DBMS_OUTPUT.put_line('使用RETURN --- 第' || i || '次迴圈'); IF i = 3 THEN RETURN; END IF; end loop; DBMS_OUTPUT.put_line('==========跳出儲存過程,該行不輸出===========校驗'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line('sqlcode : ' || sqlcode); DBMS_OUTPUT.put_line('sqlerrm : ' || sqlerrm); ROLLBACK; END CXY_CCGC_TEST4_P; --呼叫 BEGIN CXY_CCGC_TEST4_P(); END;
呼叫該儲存過程輸出如下:
希望對你有幫助,祝你有一個好心情,加油!
若有錯誤、不全、可優化的點,歡迎糾正與補充!