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;