오류란?
오라클에서 SQL 또는 PL/SQL이 정상 수행되지 못하는 상황을 오류(error)라고 한다. 이 오류는 크게 두 가지로 구분된다.
문법이 잘못되었거나 오타로 인한 오류로 컴파일 오류(compile Error), 문법 오류(syntax error)라고 한다.
명령문의 실행 중 발생한 오류를 런타임 오류(runtime error) 또는 실행 오류(execute error)라고 부른다.
오라클에서는 이 두 가지 오류 중 후자, 즉 프로그램이 실행되는 도중 발생하는 오류를 예외(exception)라고 한다.
예외 종류
오라클에서 예외는 크게 내부 예외(internal exceptions)와 사용자 정의 예외(user-defined exceptions)로 나뉜다.
내부예외 : 오라클에서 미리 정의한 예외를 뜻하며 내부 예외는 이름이 정의되어 있는 예외인 사전 정의된 예외(predefined name exceptions)와 이름이 정해지지 않은 예외로 다시 나뉜다.
사용자 정의 예외 : 사용자가 필요에 따라 추가로 정의한 예외를 의미한다.
예외 종류 | 설명 | |
---|---|---|
내부 예외 (internal exceptions) | 사전 정의된 예외 (predefined name exceptions) | 내부 예외 중 예외 번호에 해당하는 이름이 존재하는 예외 |
이름이 없는 예외 (unnames exceptions) | 내부 예외 중 이름이 존재하지 않는 예외(사용자가 필요에 따라 이름을 지정할 수 있음) | |
사용자 정의 예외(user-defined exceptions) | 사용자가 필요에 따라 직접 정의한 예외 |
예외 처리부 작성
// 기본 형식
EXCEPTION
WHEN 예외 이름1 [OR 예외 이름2 - ] THEN
예외 처리에 사용할 명령어;
WHEN 예외 이름3 [OR 예외 이름4 - ] THEN
예외 처리에 사용할 명령어;
...
WHEN OTHERS THEN
예외 처리에 사용할 명렁어;
// 기본 형식
DECLARE
예외 이름1 EXCEPTION;
PRAGMA EXCEPTION_INIT(예외 이름1, 예외 번호);
.
.
.
EXCEPTION
WHEN 예외 이름1 THEN
예외 처리에 사용할 명령어;
...
END;
// 기본 형식
DECLARE
사용자 예외 이름 EXCEPTION;
...
BEGIN
IF 사용자 예외를 발생시킬 조건 THEN
RAISE 사용자 예외 이름
...
END IF;
EXCEPTION
WHEN 사용자 예외 이름 THEN
예외 처리에 사용할 명령어;
...
END;
함수 | 설명 |
---|---|
SQLCODE | 오류 번호를 반환하는 함수 |
SQLERRM | 오류 메시지를 반환하는 함수 |