天天看点

存储过程 --- 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 --- 跳出循环

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充!