oracle中for循环的使用

FOR循环(相当于i++)

CREATE OR REPLACE FUNCTION A_Test1(I_VAL VARCHAR2) RETURN VARCHAR2 is
     V_RESULT       VARCHAR2(500);
 BEGIN
     FOR I IN 1..5 LOOP
         V_RESULT:=V_RESULT||','||I;
     END LOOP;
     RETURN V_RESULT;
 EXCEPTION
     WHEN OTHERS THEN
          RETURN SQLCODE||SQLERRM;
 END A_Test1;

最终结果:,1,2,3,4,5

 

使用REVERSE倒过来循环(相当于i--)

CREATE OR REPLACE FUNCTION A_Test1(I_VAL VARCHAR2) RETURN VARCHAR2 is
     V_RESULT       VARCHAR2(500);
 BEGIN
     FOR I IN REVERSE 1..5 LOOP
         V_RESULT:=V_RESULT||','||I;
     END LOOP;
     RETURN V_RESULT;
 EXCEPTION
     WHEN OTHERS THEN
          RETURN SQLCODE||SQLERRM;
 END A_Test1;

最终结果:,5,4,3,2,1

 

使用CONTINUE跳过当前循环,进行下一次

CREATE OR REPLACE FUNCTION A_Test1(I_VAL VARCHAR2) RETURN VARCHAR2 is
     V_RESULT       VARCHAR2(500);
 BEGIN
     FOR I IN 1..5 LOOP
         IF I=3 THEN
            CONTINUE;
         END IF;
         V_RESULT:=V_RESULT||','||I;
     END LOOP;
     RETURN V_RESULT;
 EXCEPTION
     WHEN OTHERS THEN
          RETURN SQLCODE||SQLERRM;
 END A_Test1;

最终结果:,1,2,4,5

 

 

使用EXIT跳出循环(相当于break)

CREATE OR REPLACE FUNCTION A_Test1(I_VAL VARCHAR2) RETURN VARCHAR2 is
     V_RESULT       VARCHAR2(500);
 BEGIN
     FOR I IN 1..5 LOOP
         IF I=3 THEN
            EXIT;
         END IF;
         V_RESULT:=V_RESULT||','||I;
     END LOOP;
     RETURN V_RESULT;
 EXCEPTION
     WHEN OTHERS THEN
          RETURN SQLCODE||SQLERRM;
 END A_Test1;

最终结果:,1,2

 

 

当出现EXCEPTION不想做任何操作的时候,如果什么都不写,程序会报错。如果想什么都不做,直接写一个null就行了。

CREATE OR REPLACE FUNCTION A_Test1(I_VAL VARCHAR2) RETURN VARCHAR2 is
     V_RESULT       VARCHAR2(500);
 BEGIN
     BEGIN
         SELECT MARK_NO INTO V_RESULT FROM BP_MARK;
     EXCEPTION WHEN OTHERS THEN
         NULL;
     END;
 EXCEPTION
     WHEN OTHERS THEN
          RETURN SQLCODE||SQLERRM;
 END A_Test1;

 

posted @ 2021-01-06 20:25  masha2017  阅读(4575)  评论(0编辑  收藏  举报