by 구루비 RAISE RAISE_APPLICATION_ERROR 사용자 정의 예외 EXCEPTION [2002.01.20]
오라클 저장함수 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 처리가 정상적으로 완료되었습니다.
- 강좌 URL : http://www.gurubee.net/lecture/1073
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
select * from dual
오류코드 신기하네요 ㅎㅎ