첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ 예외 처리시 SQLCODE와 SQLERRM 키워드를 사용하는 방법을 보여준다.

 

▶ 예제 코드 (SQL)

CREATE OR REPLACE PROCEDURE DeleteDepartment(P_DEPTNO IN SCOTT.DEPT.DEPTNO%TYPE)
IS
BEGIN
    DELETE FROM SCOTT.DEPT WHERE DEPTNO = P_DEPTNO;
EXCEPTION
    WHEN OTHERS
    THEN
        DECLARE
            V_ERROR_CODE    NUMBER        := SQLCODE;
            V_ERROR_MESSAGE VARCHAR2(512) := SQLERRM;
        BEGIN
            IF V_ERROR_CODE = -2292 -- 자식 레코드가 있는 경우 처리한다.
            THEN
                DELETE FROM EMP  WHERE DEPTNO = P_DEPTNO;
                DELETE FROM DEPT WHERE DEPTNO = P_DEPTNO;
            ELSIF V_ERROR_CODE = -2291 -- 부모 키가 없는 경우 처리한다.
            THEN
                DBMS_OUTPUT.PUT_LINE('부서 번호에 해당하는 부서가 없습니다 : ' || TO_CHAR (P_DEPTNO));
            ELSE
                DBMS_OUTPUT.PUT_LINE('에러가 발생했습니다 : ' || V_ERROR_MESSAGE);
            END IF;
        END;
END;

SET SERVEROUTPUT ON;

BEGIN
    DeleteDepartment(10);
END;
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요