Oracle循環中的EXIT、RETURN、CONTINUE解密


 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PROCEDURE P_TASK IS
   BEGIN
     FOR MY_CU IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
       FOR MY IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
         IF MY_CU.SPBH =  'AAA'  THEN
           RETURN;
           --exit;
           -- continue ;
         ELSIF MY.SPBH =  'BBB'  THEN
           INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ( '123' '123' );
         ELSE
           INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ( '222' '222' );
         END IF;
         INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ( '333' '333' );
       END LOOP;
     END LOOP;
     INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ( '444' '444' );
   END P_TASK;

  

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

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

第二種:使用EXIT的時候,跳出本循環轉而執行本循環的上一級循環的下一次循環。就此案例而言MY_CU.SPBH = 'AAA'為真的時候,直接跳出MY循環轉而去執行MY_CU的下一次循環

第三種:使用CONTINUE的時候,本次循環后面的代碼部分不再執行,轉而執行本循環的下一次循環。就此案例而言MY_CU.SPBH = 'AAA'為真的時候,后面的代碼不執行,繼續MY的下一次循環


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM