SQL - 예외처리

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