7.4 사용자 정의 예외(User-Defined Exceptions)

출처 http://www.gurubee.net/lecture/1073

오라클 저장함수 RAISE_APPLICATION_ERROR를 사용하여 오류코드 -20000부터 -20999의 범위 내에서 사용자 정의 예외를 만들수 있다.

  – STEP 1 : 예외의 이름을 선언 (선언절)

  – STEP 2 : RAISE문을 사용하여 직접적으로 예외를 발생시킨다(실행절)

  – STEP 3 : 예외가 발생할 경우 해당 예외를 참조한다(예외절)

사용자 정의 예외 예제

 
-- 입력한 부서의 사원이 5명보다 적으면 사용자 정의 예외가 발생하는 예제
SQL> CREATE OR REPLACE PROCEDURE User_Exception 
        (v_deptno IN emp.deptno%type ) 
     IS

       -- 예외의 이름을 선언
       user_define_error EXCEPTION;     -- STEP 1
       cnt     NUMBER;

     BEGIN

       DBMS_OUTPUT.ENABLE;   

       SELECT COUNT(empno) 
       INTO cnt
       FROM emp
       WHERE deptno = v_deptno;

       IF cnt < 5 THEN
         -- RAISE문을 사용하여 직접적으로 예외를 발생시킨다
          RAISE user_define_error;         -- STEP 2
       END IF;

      EXCEPTION
        -- 예외가 발생할 경우 해당 예외를 참조한다.
       WHEN user_define_error THEN      -- STEP 3
           RAISE_APPLICATION_ERROR(-20001, '부서에 사원이 몇명 안되네요..');

   END; 
  /

-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 
SQL> SET SERVEROUTPUT ON ; 

-- 10부서의 사원이 5보다 적기 때문에 사용자 정의 예외가 발생.
SQL> EXECUTE user_exception(10);
BEGIN user_exception(10); END;
 *
1행에 오류:
ORA-20001: 부서에 사원이 몇명 안되네요..
ORA-06512: "SCOTT.USER_EXCEPTION", 줄 17에서
ORA-06512: 줄 1에서

-- 20부서로 실행을 하면 에러가 발생하지 않는 것 을 알 수 있다.
SQL> EXECUTE user_exception(20);
PL/SQL 처리가 정상적으로 완료되었습니다.
    

답글 남기기 0

Your email address will not be published. Required fields are marked *