개발 & 데이터베이스/DB

오라클 PL/SQL RAISE_APPLICATION_ERROR 사용자 예외 처리

K.두부 2023. 5. 9. 22:08
반응형

PL/SQL에서 사용자 정의 함수를 만들 때 오류 코드 또한 사용자가 임의로 설정할 수 있다.

아래와 같은 방법으로 에러 메시지를 정의할 수 있는데, 오류 코드의 범위는 -20000 ~ -20999다.

 

RAISE_APPLICATION_ERROR(오류코드, 에러메시지);

오류코드: -20000 ~ -20999

 

예시

CREATE OR REPLACE PROCEDURE RAISE_TEST

IS
  USER_ERROR EXCEPTION;
  CNT NUMBER;

BEGIN
  SELECT COUNT(*)
    INTO CNT
    FROM TMP;
  
  IF CNT <= 3 THEN
    RAISE USER_ERROR;
  END IF;
  
  EXCEPTION
    WHEN USER_ERROR THEN
      RAISE_APPLICATION_ERROR(-20001, '사용자 에러 발생!!!');

END;

임시로 TMP 테이블을 만들었고, 데이터가 하나도 없기 때문에 CNT=0이다.

즉, 예외를 강제로 발생시켰고 아래와 같은 예외가 발생하는 것을 볼 수 있다.

 

 

 

사용자 오류코드 범위를 벗어나면 어떻게 될까?

임시로 -19999로 설정해서 실행시켜봤다.

CREATE OR REPLACE PROCEDURE RAISE_TEST

IS
  USER_ERROR EXCEPTION;
  CNT NUMBER;

BEGIN
  SELECT COUNT(*)
    INTO CNT
    FROM TMP;
  
  IF CNT <= 3 THEN
    RAISE USER_ERROR;
  END IF;
  
  EXCEPTION
    WHEN USER_ERROR THEN
      RAISE_APPLICATION_ERROR(-19999, '사용자 에러 발생!!!');

END;

 

 

반응형