PL/SQL 코드를 작성할때 발생할 수 있는 오류에는 크게 두가지가 있습니다.
문법 오류로써 객체나 키워드 이름을 잘못 참조하거나 함수나 프로시져의 매개변수를 잘못 명시할때 발생하는 오류로 컴파일할때 걸러지고, 두번째는 컴파일할때는 아무런 문제가 없는데 실행, 즉 런타임 때 로직을 처리하면서 발생하는 오류인데 이를 예외(exception)이라고 합니다.
컴파일시 발생하는 오류도 예외라고 하지만, 우리가 흔희 예외라고 하면 런타임시 발생하는 오류를 말합니다.
예외에는 오라클에서 발생시키는 시스템예외와 사용자가 의도적으로 발생 시킬 수 있는 사용자 정의 예외로 나누어집니다.
* 예외처리 구문
EXCEPTION WHEN 예외명1 THEN 예외처리 구문1
WHEN 예외명2 THEN 예외처리 구문2
...
WHEN OTHERS THEN 예외처리 구문n;
SQL Developer에서 실행하면 ORA-01476: 제수가 0 입니다. 라는 시스템 오류가 발생합니다. 10을 0으로 나눌려고 하니 당연히 오류가 발생하고 시스템에서 오류를 뱉어낸것입니다.
그럼 예외처리 구문을 포함하여 SQL Developer에서 코딩 후 실행을 해보도록 하겠습니다.
아래를 한번 보시죠.
먼저 DBMS_OUTPUT을 사용할려면 SET SERVEROUTPUT ON 명령어를 실행해야합니다.
첫번째 이미지랑 틀린점은 시스템에서 오류를 내뱉지 않고 오류처리 구문으로 넘어가서 '오류가 발생하였습니다'라는 메시지를 출력하게됩니다.
22라인에서 no_exec_proc를 실행하면 시스템 오류가 발생하고 23라인의 Success 메시지가 나타나지 않는 것을 볼 수 있습니다.
그렇지만, 29라인의 except_proc를 실행하면 '오류가 발생하였습니다' 라는 메시지를 출력하고 30라인의 'Success' 메시지를 출력합니다.
40,41,42라인에서 SQLCODE, SQLERRM, DBMS_UTILITY를 사용하면 위 이미지처럼 좀 더 자세한 정보를 볼 수 있습니다.
이번시간에는 PL/SQL 예외처리 첫번째 시간으로 다음시간에 이어서 진행하도록 하겠습니다.
이글이 유용하다면 아래의 공감버튼을 눌러주시길 부탁드립니다. ^^ ㅎ
공감버튼은 로그인 하지 않으셔도 누르실 수 있어요...^^*
오라클 조회순번 매기는 쿼리~ (0) | 2021.02.17 |
---|---|
오라클 계정 상태보기, account unlock, password expired 해결 (0) | 2019.03.13 |
PL/SQL 커서(cursor) (0) | 2019.03.13 |
Sql Developer 설치하기 (0) | 2019.03.11 |
오라클 11g 데이터베이스 설치하기 (0) | 2019.03.11 |
댓글 영역