天天看點

存儲過程 --- 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;
           

調用該存儲過程輸出如下:

存儲過程 --- 6 --- 跳出循環

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

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