1. 程式人生 > 資料庫 >oracle中for迴圈的使用

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;