투케이2K

94. (DB/데이터베이스) [ORACLE] exception when then PL/SQL 쿼리 및 문법 예외 상황 처리 설명 본문

DataBase

94. (DB/데이터베이스) [ORACLE] exception when then PL/SQL 쿼리 및 문법 예외 상황 처리 설명

투케이2K 2022. 12. 10. 10:38

[학습 구분]

과목 : Database / 데이터베이스

 

[설 명]

1. exception 은 오라클에서 사용되며, PL/SQL 쿼리 및 문법에서 예외가 발생하면 여러개의 처리부 중에서 해당되는 예외 부분에서 에러를 처리 합니다

2. 문법 : exception when 조건 then 만족

- [조건] 에는 사전 정의된 오류, 사용자 정의 오류가 표시됩니다

 

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

3. [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;
 

 

반응형
Comments