DB/ORACLE

[Oracle - PL_SQL] 오라클 FUNCTION, PROCEDURE EXCEPTION 활용법

Kang_hobin 2022. 9. 26. 15:24

오라클 FUNCTION이나 PROCEDURE 내부에서 자바의 TRY CATCH과 비슷하게 EXCEPTION을 활용할 수 있다.

먼저 FUNCTION 내부에서 EXCEPTION으로 사용할 변수를 생성한다.

    FUNCTION F_TEST (
        P_TEST1 VARCHAR2
        , P_TEST2         VARCHAR2 
    ) RETURN VARCHAR2 IS
        V_RESULT VARCHAR2(10) := 'FALSE';
        EXCEPTION_1 EXCEPTION; -- EXCEPTION 명을 EXCEPTION_1으로 지정했다.
        
~~
~~

 

해당 EXCEPTION을 내가 원하는 부분에 로직으로 추가하여 EXCEPTION을 발생시킬 수 있다.

기본 EXCEPTION 문법에 WHEN 절에 추가하면 된다.

만약 EXCEPTION에서 WHEN OTHERS THEN 을 사용했을 경우 모든 예외사항에 대해 처리할 수 있다.

EXCEPTION 
   WHEN EXCEPTION_1 THEN
~~ 원하는 로직 작성

 

	    IF V_RESULT = 'TRUE' THEN
	       COMMIT;
	       RETURN V_RESULT;
	    ELSE 
	       RAISE EXCEPTION_1; -- RAISE를 통해 기 지정한 EXCEPTION_1을 발생시킨다.
	    END IF;
	   
		EXCEPTION
		    WHEN EXCEPTION_1 THEN -- 위에서 RAISE한 EXCEPTION_1 오류 발생 시
		    	DBMS_OUTPUT.PUT_LINE('EXCEPTION_1 FAIL'); -- 아래 내부와 같은 로직으로 사용 가능하다.
		        ROLLBACK;
		        RETURN V_RESULT;
		       
		    WHEN OTHERS THEN
			    DBMS_OUTPUT.PUT_LINE('에러코드: '||SQLCODE);    
		        DBMS_OUTPUT.PUT_LINE('에러 메세지: '||SQLERRM);  
		        ROLLBACK;
		        RETURN V_RESULT;
	                               
    END F_TEST;