[PL/SQL] Exception ORACLE/PL-SQL 2012. 3. 29. 14:29

예외는 다들 알고 있는 개념일 것이다.

어떠한 내용이 동작을 하다가 예상치 못한 경우들이 생겼을 때 예외처리를 해 준다.

JAVA나 C#에서 보면 TRY-CATCH 구문이다. 

다음은 오류의 종류이다.

예외

설명

처리 

정의 된 오라클 서버 오류(Predefined Oracle Server)

 

(

PL/SQL에서 발생하는 오류

자동 트랩처리 

정의되지 않은 오라클 서버 오류(Non-Predefined Oracle Server)

정의 된 오라클 서버 오류 외

선언부에서 선언 해야하며 자동 트랩 

사용자 정의 오류(User-Defined)

개발자가 정한 내용에서 벗어 나는 오류 

선언부에서 선언하며 RAISE 사용하여 호출

미리 정의된 예외 종류는 http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/errors.htm 에 보면 나와 있다.

몇가지 예를 들어서 보면 다음과 같다. 

예외

설명 

NO_DATA_FOUND

SELECT 의한 데이터가 없을 경우 

DUP_VAL_ON_INDEX

UNIQUE 제약 가지는 컬럼에 중복 INSERT 발생 경우

ZERO_DIVIDE

0으로 나눌 경우

INVALID_CURSOR

잘못된 커서 연산 경우

정의 되지 않은 경우는 먼저 예외의 이름을 선언하며, PRAAGMA EXCEPTION_INIT을 이용하여 오류 번호를 결합한 다음 EXCEPTION 부분에서 처리를 해야한다.

다음은 그 예이다.

CREATE OR REPLACE PROCEDURE TEST

IS

test_exception EXCEPTION;

PRAGMA EXCEPTION_INIT(test_exception,오류 번호);

BEGIN

EXCEPTION

WHEN test_exception THEN 처리 내용

END;

위에서 처리 번호는 오라클 서버 에러에 대해 어느정도 참조하는 것이 좋다.