[Oracle] 38.예외처리


예외처리



자바에서와 같이 오라클에서 예외가 발생했을 때 예외를 처리할 수 있습니다.

예외의 종류는 오라클에서 미리 제공하는 오라클 예외와

사용자에 의해 정의되는 사용자 정의 예외가 있습니다.

오라클 예외는 다음과 같은 것들이 있습니다.


image




예외처리 실습




  • 오라클 예외처리




CREATE OR REPLACE PROCEDURE ex01 (
    p_eid emp.employee_id%TYPE
) IS
    ename   VARCHAR2(50);
BEGIN
    SELECT
        first_name|| ' '|| last_name
    INTO ename
    FROM
        emp
    WHERE
        employee_id = p_eid;

    dbms_output.put_line('사원명: ' || ename);
EXCEPTION --예외처리
    WHEN no_data_found THEN
        dbms_output.put_line('조회된 데이터가 없습니다.');
END;
/




EXEC ex01(500); --사원번호 500은 존재 x




image




  • 사용자 정의 예외 처리




CREATE OR REPLACE PROCEDURE del_row ( p_empid employees.employee_id%TYPE) 
IS
    null_ex EXCEPTION; --예외정의
BEGIN
    IF --사원번호가 null이거나 0이면 예외발생시킴
        ( p_empid IS NULL OR p_empid = 0 )
    THEN
        RAISE null_ex;
    END IF;
    dbms_output.put_line(p_empid);
    DELETE FROM emp -- 해당 행 삭제
    WHERE
        employee_id = p_empid;

EXCEPTION
    WHEN null_ex THEN
        dbms_output.put_line('사원번호를 정확히 입력해주세요');
END;
/




EXECUTE del_row(NULL);




image