2020. 9. 25. 19:46ㆍ학원공부/SQL
예외처리
PL/SQL의 오류
문법 오류
객체나 키워드 이름을 잘못 참조하거나 함수나 프로시저의 매개변수를 잘못 명시했을 때 발행되는 오류
컴파일할 때 걸러짐
예외
실행 시에 로직을 처리하면서 발생하는 오류
시스템 예외와 사용자 정의 오류 두가지로 구분
시스템 예외는 오라클 내부에 미리 정의된 예외
사용자정의예외–사용자가직접예외를정의해서사용하는것
예외처리가 필요한 이유?
예외처리를 해주어 바로 프로그램이 다운되지 않고 어떤 에러가 났는지 알수있고 일단 실행시킴.
SQLCODE, SQLERRM 예외정보
오라클에서는 발생한 예외 정보를 참조하기 위한 수단으로 SQLCODE와
SQLERRM의 내장 함수를 제공함.
SQLCODE
실행부에서 발생한 예외에 해당하는 코드를 반환.
SQLERRM
발생한 예외에 대한 오류 메시지를 반환.
SQLCODE, SQLERRM 참조 예제
세부적인 예외 정보
-DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
어느줄에서 에러가 발생했는지 알수 있다.
시스템 예외
예외명 |
예외 코드 |
설명 |
ACCESS_INTO_NULL |
ORA-06530 |
LOB와 같은 객체 초기화 되지 않은 상태에서 사용 |
CASE_NOT_FOUND |
ORA-06592 |
CASE문 사용시 구문 오류 |
CURSOR_ALREADY_OPEN |
ORA-06511 |
커서가 이미 OPEN된 상태인데 다시 OPEN하려고 시도 |
DUP_VAL_ON_INDEX |
ORA-00001 |
UNIQUE 인덱스가 있는 컬럼에 중복값으로 INSERT, UPDATE 수행 |
INVALID_CURSOR |
ORA-01001 |
존재하지 않는 커서를 참조 |
INVALID_NUMBER |
ORA-01722 |
문자를 숫자로 변환할 때 실패한 경우 |
LOGIN_DENIED |
ORA-01017 |
잘못된 사용자 이름이나 비밀번호로 로그인 시도 |
NO_DATA_FOUND |
ORA-01403 |
SELECT INTO 시 데이터가 한 건도 없을 경우 |
NOT_LOGGED_ON |
ORA-01012 |
로그온 되지 않았는데 DB를 참조할 때 |
PROGRAM_ERROR |
ORA-06501 |
PL/SQL 코드 상에서 내부 오류를 만났을 때, 이 오류가 발생하면 “오 라클에 문의(Contact Oracle Support)"란 메시지가 출력됨 |
STORAGE_ERROR |
ORA-06500 |
프로그램 수행 시 메모리가 부족한 경우 |
TIMEOUT_ON_RESOURCE |
ORA-00051 |
데이터베이스 자원을 기다리는 동안 타임아웃 발생 |
TOO_MANY_ROWS |
ORA-01422 |
SELECT INTO 절 사용할 때 결과가 한 레코드 이상일 때 |
VALUE_ERROR |
ORA-06502 |
수터 또는 값 오류 |
ZERO_DIVIDE |
ORA-01476 |
0으로 나눌 때 |
'학원공부 > SQL' 카테고리의 다른 글
SQL - 트랜잭션, 커서 (0) | 2020.10.04 |
---|---|
SQL - PL/SQL 2 (0) | 2020.09.25 |
SQL - PL /SQL (0) | 2020.09.24 |
SQL - join3 (0) | 2020.09.23 |
sql - join2 (0) | 2020.09.23 |