1. 程式人生 > >儲存過程 --- 6 --- 跳出迴圈

儲存過程 --- 6 --- 跳出迴圈

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;

呼叫該儲存過程輸出如下:


希望對你有幫助,祝你有一個好心情,加油!

若有錯誤、不全、可優化的點,歡迎糾正與補充!