오라클 저장함수 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
- - 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- - 구루비의 모든 강좌는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
'IT > 오라클' 카테고리의 다른 글
Oracle PL/SQL 강좌 8. Package(패키지) (0) | 2015.11.24 |
---|---|
Oracle PL/SQL 강좌 7.5. SQLCODE, SQLERRM (0) | 2015.11.24 |
Oracle PL/SQL 강좌 7.3. 미리 정의되지 않은 예외(Non-Predefined Exception) (0) | 2015.11.24 |
Oracle PL/SQL 강좌 7.2. 미리 정의된 예외(Predefined Exceptions) (0) | 2015.11.24 |
Oracle PL/SQL 강좌 7.1. 예외(Exception) (0) | 2015.11.24 |