Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-member domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /ledcorps/www/wp/wp-includes/functions.php on line 6114 7.4 사용자 정의 예외(User-Defined Exceptions) – 대나무숲

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 *