오라클 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;
'DB > ORACLE' 카테고리의 다른 글
[Oracle - 에러] ORACLE INSERT FETCH ROWS 시 ORA-00918 오류 (0) | 2022.12.22 |
---|---|
[Oracle - PL_SQL] 오라클 FUNCTION GOTO 사용하기 (0) | 2022.09.26 |
[Oracle - PL_SQL] 오라클 FUNCTION LOOP 사용법 (0) | 2022.09.26 |
[Oracle - PL_SQL] 오라클 FUNCTION 사용법 (0) | 2022.09.26 |
콤마(,) 로 이루어진(LISTAGG) 문자열 ROW로 변환하기(oracle, mariadb) (0) | 2022.09.26 |