공부/데이터베이스

[oracle] 오라클 PL/SQL 예외처리(Exception)

ghhong 2022. 10. 25. 10:00

오라클 PL/SQL 예외처리(Exception)

오라클에서 제공하는 예외와 사용자가 정의하는 커스텀 예외가 있다.

커스텀 예외 처리 : 예외 선언 -> 예외 호출 -> 예외 수행 순서로 작성한다.

예제:

CREATE OR REPLACE

PROCEDURE CUSTOM_PROC(

NUM IN NUMBER,

OUT_MSG OUT VARCHAR2

)

IS

NUM_CHECKER EXCEPTION -- 커스텀 예외 선언

BEGIN

IF NUM > 10 THEN -- EXCEPTION 조건 설정

RAISE NUM_CHECKER; -- EXCEPTION 호출

END IF;

 

RAISE NO_DATA_FOUND;

 

EXCEPTION

WHEN NUM_CHECKER THEN -- 조건이 맞아 예외가 발생한 경우(RAISE)

BEGIN

OUT_MSG := '10이상';

RETURN; --RETURN 없으면 쿼리를 계속 수행함

END;

WHEN OTHERS THEN --조건에 맞지 않는 경우

BEGIN

OUT_MSG := 'OTHER 확인';

END;

 

OUT_MSG := '';

END;

 

오라클에서 제공하는 예외를 사용하는 프로시저 예제:

CREATE OR REPLACE

PROCEDURE PROC_TEST1(

NUM IN NUMBER,

OUT_MSG OUT VARCHAR2

)

IS --여기서 커스텀 예외같은 경우에 선언을 해줘야 하지만 오라클에서 제공하는 예외의 경우 선언이 필요 없다.

BEGIN

INSERT INTO TBL_EX(ONE) VALUES('A');

 

EXCEPTION

WHEN ACCESS_INTO_NULL THEN

BEGIN

OUT_MSG := 'EXCEPTION 발생';

END;

END;