[오라클 PL/SQL] PL/SQL 예외처리 SQLCODE, SQLERRM 이용하여 예외 처리 하기


안녕하세요.

 

오늘은 오라클 PL/SQL에서 예외처리 참조 수단으로 자주 사용되는 SQLCODE, SQLERRM에 대해서 알아보고 사용하는 방법에 대해서 알아 보려고 합니다.

 

SQLCODE는 실행부에서 발생한 예외에 해당하는 코드를 반환해 줍니다. 예를 들어 0으로 나누면 이에 대한 예외 코드인 ‘-1476’을 반환해 줍니다.

SQLCODE에서 만약 에러가 없이 정상적으로 프로시저가 실행 되었으면, RETRUN값은 ‘0’을 반환해 줍니다.

 

SQLERRM은 발생한 예외에 대한 오류 메시지를 반환해 줍니다. 이 함수는 매개변수로 예외코드 값을 받는에, 매개변수를 넘기지 않으면 디폴트로 SQLCODE가 반환한 예외코드 값과 연관된 예외 메시지를 반환해 줍니다.


 

그럼 실제로 PL/SQL에서 어떻게 사용하는지 예제를 통해서 알아보도록 하겠습니다.


SQLCODE, SQLERRM 이용한 예외 처리


1

2

3

4

5

6

7

8

9

10

11

12

13

14

CREATE OR REPLACE PROCEDURE my_new_proc

IS

    vi_num NUMBER := 0;

BEGIN

    vi_num := 10 / 0;

    DBMS_OUTPUT.PUT_LINE('SUCCESS!');

    

EXCEPTION WHEN OTHERS THEN

    DBMS_OUTPUT.PUT_LINE('에러 발생');

    DBMS_OUTPUT.PUT_LINE('SQL CODE : ' || SQLCODE);

    DBMS_OUTPUT.PUT_LINE('SQL ERRM : ' || SQLERRM);

    DBMS_OUTPUT.PUT_LINE(SQLERRM(SQLCODE));

    

END;

Colored by Color Scripter

cs

 

위에서 my_new_proc라는 프로시저를 생성하였고, vi_num10/0을 해줘서 일부러 에러가 발생 하도록 프로시저를 구현하였습니다.

 

그럼 이제 각각 SQLCODE, SQLERRM이 어떻게 에러 문구를 반환하는지 확인해 보도록 하겠습니다.

 

실행 결과



실행 결과에서 보시게 되면, 제일 처음에는 에러 발생이라는 문구가 출력 되었고 2번째 라인부터는 SQL CODE : -1476인 해당 에러 코드 값만 반환해 주신 것을 확인하실 수 있습니다.

 

SQLERRM은 해당 에러코드에 해당되는 메시지를 반화하였고, 마지막으로 SQLERRM(SQLCODE)로 출력된 내용은 에러 코드와 메시지가 함께 반환된 것을 확인하실 수 있습니다.

 

감사합니다~~


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY