1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (187)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (27)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
      • TIL (1)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

[PL/SQL] 예외처리 (1) : 예외처리란?
📃 DATABASE/ORACLE

[PL/SQL] 예외처리 (1) : 예외처리란?

2018. 1. 24. 16:36

 예외처리(1) : 예외처리란?

 예외처리(2) : 시스템 예외와 사용자 정의 예외

 예외처리(3) : 효율적인 예외처리


예외처리

예외에는 시스템 예외와 사용자 정의 예외가 있다. 시스템 예외는 오라클 내부에 미리 정의된 예외이고, 사용자 정의 예외는 사용자가 직접 예외를 정해서 사용하는 것이다.

구체적인 예외명을 알 수 없을 때는 OTHERS를 사용하면 오라클 시스템에서 PL/SQL 코드상에서 발생한 런타임 예외를 자동으로 잡아준다.


구문

1
2
3
4
EXCEPTION   WHEN 예외명 THEN 예외처리구문1
            WHEN 예외명 THEN 예외처리구문2
            ...
            WHEN OTHERS THEN 예외처리구문N;
cs


예제

1
2
3
4
5
6
DECLARE
    VI_NUM  NUMBER := 0;
BEGIN
    VI_NUM := 10 / 0;
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
END;
Colored by Color Scripter
cs



예외가 발생해 'SUCCESS'가 출력되지 않았다. 그렇다면, 예외를 처리하게 되면 어떻게 될까?


1
2
3
4
5
6
7
8
9
10
DECLARE
    VI_NUM  NUMBER := 0;
BEGIN
    VI_NUM := 10 / 0;
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
 
EXCEPTION
    WHEN OTHERS THEN
         DBMS_OUTPUT.PUT_LINE('예외가 발생했습니다.');
END;
Colored by Color Scripter
cs



예외가 발생했다는 문자열이 출력되고 종료된다. 이 전과는 달리, 함수가 정상적으로 종료되 오류 메시지가 출력되지 않았음을 확인할 수 있다.


이 둘의 차이를 보기위해, 예외처리를 한 프로시저와 그렇지 않은 프로시저를 만들어보겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE OR REPLACE PROCEDURE NO_EXCEPTION_PROC
IS
    VI_NUM  NUMBER := 0;
BEGIN
    VI_NUM := 10 / 0;
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
END;
 
CREATE OR REPLACE PROCEDURE EXCEPTION_PROC
IS    
    VI_NUM  NUMBER := 0;
BEGIN
    VI_NUM := 10 / 0;
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
 
EXCEPTION
    WHEN OTHERS THEN
         DBMS_OUTPUT.PUT_LINE('예외가 발생했습니다.');
END;
Colored by Color Scripter
cs



프로시저들을 만들었으니, 각각 실행해보자.


예외처리가 없는 프로시저

1
2
3
4
5
6
DECLARE
    VI_NUMBER NUMBER := 0;
BEGIN
    NO_EXCEPTION_PROC;
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
END;
Colored by Color Scripter
cs




예외처리를 한 프로시저

1
2
3
4
5
6
DECLARE
    VI_NUMBER NUMBER := 0;
BEGIN
    EXCEPTION_PROC;
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
END;
Colored by Color Scripter
cs



예외처리를 한 경우, 프로시저가 정상적으로 종료되고 다음 로직이 수행된다. 그러나, 예외처리가 없는 경우 프로시저에서 강제적으로 종료되고 오류 메시지가 출력된다.



 예외처리(1) : 예외처리란?

 예외처리(2) : 시스템 예외와 사용자 정의 예외

 예외처리(3) : 효율적인 예외처리

반응형
저작자표시 비영리 변경금지 (새창열림)

'📃 DATABASE > ORACLE' 카테고리의 다른 글

[PL/SQL] 예외처리(3) : 효율적인 예외처리  (3) 2018.01.26
[PL/SQL] 예외처리(2) : 시스템 예외와 사용자정의 예외  (0) 2018.01.25
[PL/SQL] 프로시저(PROCEDURE)  (0) 2018.01.23
[PL/SQL] 사용자 정의함수  (0) 2018.01.22
[PL/SQL] 반복문  (0) 2018.01.21
    '📃 DATABASE/ORACLE' 카테고리의 다른 글
    • [PL/SQL] 예외처리(3) : 효율적인 예외처리
    • [PL/SQL] 예외처리(2) : 시스템 예외와 사용자정의 예외
    • [PL/SQL] 프로시저(PROCEDURE)
    • [PL/SQL] 사용자 정의함수
    1HOON
    1HOON

    티스토리툴바