투케이2K

72. (Oracle/오라클) exception when then 사용해서 예외 상황 에러 확인 실시 본문

OracleDB

72. (Oracle/오라클) exception when then 사용해서 예외 상황 에러 확인 실시

투케이2K 2021. 1. 25. 12:40

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : Toad

개발 언어 : Oracle

/* =========================== */

/* =========================== */

[소스 코드]

 

/*
[exception when then 사용해서 예외 상황 에러 확인 실시]
1. exception 은 예외가 발생하면 여러개의 처리부 중에서 해당되는 예외부분에서 처리됩니다
2. exception when 조건 then 만족 - 조건에는 사전 정의된 오류, 사용자 정의 오류가 표시됩니다
                                 만족에는 에러 발생 시 수행될 로직입니다
*/

DECLARE
    M_DATA VARCHAR2 (100) := '2021-01-25'; --초기 변수 선언
    O_MSG VARCHAR2 (100); --결과값을 담을 변수 선언    
    M_STEP VARCHAR2(100) := '0'; --어느 부분에서 에러가 발생한지 확인하기 위한 변수
    BEGIN
       M_STEP := '1'; --1단계 정의 실시      
       DBMS_OUTPUT.PUT_LINE('=============================');
       DBMS_OUTPUT.PUT_LINE('M_STEP : ' || M_STEP);
       DBMS_OUTPUT.PUT_LINE('M_DATA : ' || M_DATA);        
       DBMS_OUTPUT.PUT_LINE('=============================');
       
       M_STEP := '2'; --2단계 정의 실시      
       SELECT M_DATA || TO_CHAR(SYSDATE, ' HH24:MI:SS')
           INTO M_DATA
          FROM DUAL;           
       DBMS_OUTPUT.PUT_LINE('=============================');
       DBMS_OUTPUT.PUT_LINE('M_STEP : ' || M_STEP);
       DBMS_OUTPUT.PUT_LINE('M_DATA : ' || M_DATA);        
       DBMS_OUTPUT.PUT_LINE('=============================');
       
       M_STEP := '3'; --3단계 정의 실시
       M_DATA := M_DATA / 0; -- 일부러 예외 발생 위해 0나누기 수행                
       DBMS_OUTPUT.PUT_LINE('=============================');
       DBMS_OUTPUT.PUT_LINE('M_STEP : ' || M_STEP);
       DBMS_OUTPUT.PUT_LINE('M_DATA : ' || M_DATA);               
       DBMS_OUTPUT.PUT_LINE('=============================');
       
       M_STEP := '4'; --4단계 정의 실시              
       O_MSG := '{ " RESULT " : " SUCCESS " }';
       DBMS_OUTPUT.PUT_LINE('=============================');
       DBMS_OUTPUT.PUT_LINE('M_STEP : ' || M_STEP);
       DBMS_OUTPUT.PUT_LINE('M_DATA : ' || M_DATA);
       DBMS_OUTPUT.PUT_LINE(O_MSG);               
       DBMS_OUTPUT.PUT_LINE('=============================');
    EXCEPTION 
    WHEN NO_DATA_FOUND 
            THEN O_MSG := '{ " EXCEPTION " : " NO_DATA_FOUND " }';
                 DBMS_OUTPUT.PUT_LINE('=============================');
                 DBMS_OUTPUT.PUT_LINE(O_MSG);                                   
                 DBMS_OUTPUT.PUT_LINE('=============================');
                 
    WHEN OTHERS 
            THEN O_MSG := '{ " EXCEPTION " : " M_STEP := '||M_STEP||' "'||' }';
                 DBMS_OUTPUT.PUT_LINE('=============================');
                 DBMS_OUTPUT.PUT_LINE(O_MSG);                                   
                 DBMS_OUTPUT.PUT_LINE('=============================');
    END; 

/* =========================== */

[결과 출력]

/* =========================== */

/* =========================== */

[요약 설명]

1. exception 은 예외가 발생하면 여러개의 처리부 중에서 해당되는 예외부분에서 처리됩니다

2. exception when 조건 then 만족 - 조건에는 사전 정의된 오류, 사용자 정의 오류가 표시됩니다

                                               만족에는 에러 발생 시 수행될 로직입니다

/* =========================== */

반응형
Comments