DataBase/PL SQL

6. 사용자 정의 예외

RoarinGom 2021. 2. 23. 19:49

: 사용자가 임의의 예외를 정의하고 강제로 예외를 발생시켜서 확인 

 

 

DECLARE 이용 예외 정의

사용자정의예외명 EXCEPTION;

BEGIN IF 조건문 THEN

RAISE 사용자정의예외명;

END IF;

EXCEPTION WHEN 사용자예외정의 THEN 처리 메세지 END;

 

DECLARE
e_user_exception Exception;
cnt NUMBER:=0;

BEGIN
SELECT COUNT(*)
INTO cnt
FROM EMPLOYEES
WHERE DEPARTMENT_ID=40;

IF cnt<5 THEN
RAISE e_user_exception;
END IF;

EXCEPTION
WHEN e_user_exception THEN
DBMS_OUTPUT.PUT_LINE('5명 이하 부서입니다');
END;

예시2)

DECLARE
  e_user_exception EXCEPTION;
  v_deptno NUMBER:=110;
  v_cnt NUMBER;
  v_employee_id employees2.employee_id%TYPE;
BEGIN
   
    SELECT MAX(EMPLOYEE_ID)+1
    INTO v_employee_id
    from employees2;
    
    SELECT count(*)
    INTO v_cnt
    FROM EMPLOYEES2
    where department_id=v_deptno;
    SYS.DBMS_OUTPUT.PUT_LINE('부서번호 값 개수:'||v_cnt);
    
   if v_cnt=0 THEN
    RAISE e_user_exception;
    INSERT INTO EMPLOYEES2(EMPLOYEE_ID,LAST_NAME, EMAIL, HIRE_DATE,JOB_ID, DEPARTMENT_ID)
    VALUES(v_employee_id,'HI','H@HI.COM',SYSDATE,'AD_VP',v_deptno);
  End if;
  Exception
    When e_user_exception THEN
    DBMS_OUTPUT.PUT_LINE('부서번호 값이 존재하지 않습니다!!');
    when others then
    dbms_output.put_line('기타 예외');

END;