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;