DB/오라클

예외처리(EXCEPTION)

2022. 10. 24. 23:00
목차
  1. 오라클 예외처리 정리
  2. 시스템예외
  3. 사용자정의 예외처리
  4. 1. 예외정의
  5. 2. 예외 발생시키기
  6. 3. 발생된 예외처리
  7. 시스템예외에 이름 부여하기
  8. 1. 예외정의
  9. 2. 사용자정의예외명과 시스템예외코드 연결
  10. 3. 발생된 예외처리

오라클 예외처리 정리

 

시스템예외

예외명 예외코드 설명
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 유일 인덱스가 있는 컬럼에 중복값으로 INSERT, UPDATE 수행
INVALID_CURSOR ORA-01001 존재하지 않는 커서참조
INVALID_NUMBER ORA-01722 문자를 숫자로 변환실패
LOGIN_DENIED ORA-01017 잘못된 사용자 이름이나 비밀번호로 로그인 시도
NO_LOGGED_ON ORA-01012 로그온되지 않은상태로 DB참조
NOT_DATA_FOUND ORA-01403 SELECT INTO 시 데이터가 한 건도 없을경우
PROGRAM_ERROR ORA-06501 PL/SQL 쿼리상에서 내부 오류를 만났을 때, 오라클에 문의
STORAGE_ERROR ORA-06500 프로그램 수행 시 메모리가 부족할 경우
TIMEOUT_ON_RESOURCE ORA-00051 데이터베이스 자원을 기다리는 동안 타임아웃발생
TOO_MANI_ROWS ORA-01422 SELECT INTO 문법에서 결과가 복수개 ROW일 때
VALUE_ERROR ORA-06502 수치 또는 값 오류
ZERO_DIVIDE ORA-01476 0으로 나눌 때

 

사용자정의 예외처리

사용자가 직접 예외를 정의하고 예외가 발생하면 EXCEPTION절에서 처리할 로직을 구현한다.

방법

1. 예외정의

사용자 예외를 변수나 상수처럼 PL/SQL 블록 선언부에 예외를 정의해야 한다.

사용자예외명 EXCEPTION; 형태로 선언한다.

1
2
EX)사용자예외 정의
USER_CUSTOM_EXCEPTION EXCEPTION;
cs

 

2. 예외 발생시키기

시스템예외는 해당 예외가 자동으로 검출되지만, 사용자 정의 예외는 직접 예외를 발생시켜야 한다.

즉! 시스템예외는 오류가 발생하면 자동으로 발생됨

사용자정의 예외는 오류가 발생하는 시점에서 직접 예외를 발생시켜서 EXCEPTION 구문으로 점프시켜야함

1
2
EX)예외발생시키기
RAISE USER_CUSTOM_EXCEPTION;
cs

 

3. 발생된 예외처리

예외를 발생시키면 자동으로 제어권이 EXCEPTION절로 넘어오므로

시스템예외와 동일한 방식으로 처리해주면 된다.

1
2
3
4
5
6
7
EX)예외처리
EXCEPTION
    WHEN USER_CUSTOM_EXCEPTION THEN
        DBMS_OUTPUT.PUT_LINE('사용자정의 예외입니다.');
    WHEN ZERMO_DIVIDE THEN
        DBMS_OUTPUT.PUT_LINE('0으로 나누었습니다.');    
END;
Colored by Color Scripter
cs

 

시스템예외에 이름 부여하기

시스템예외에는 미리 예외명이 부여된 것들도 존재하나 극소수이고

대부분은 예외코드(에러코드)만 존재한다.

 

이런 예외에 이름을 부여하면 코드의 가독성을 높이고, 로직을 파악하기도 쉬워진다.

방법

1. 예외정의

사용자정의 예외와 같이 선언부에 사용자정의예외를 정의한다.

 

2. 사용자정의예외명과 시스템예외코드 연결

1
2
EX)사용자정의예외명과 시스템예외코드 연결
PRAGMA EXCEPTION_INIT( 'NEW_NAME',  'ORA-00001');
cs

 

3. 발생된 예외처리

1
2
3
4
EX)발생된 예외처리
EXCEPTION WHEN NEW_NAME THEN
    DBMS_OUTPUT.PUT_LINE('이름이 부여된 시스템예외입니다.');
END;
Colored by Color Scripter
cs
  1. 오라클 예외처리 정리
  2. 시스템예외
  3. 사용자정의 예외처리
  4. 1. 예외정의
  5. 2. 예외 발생시키기
  6. 3. 발생된 예외처리
  7. 시스템예외에 이름 부여하기
  8. 1. 예외정의
  9. 2. 사용자정의예외명과 시스템예외코드 연결
  10. 3. 발생된 예외처리
'DB/오라클' 카테고리의 다른 글
  • 업무에 사용하는 시스템테이블 정리
  • 오라클 커서
  • PL/SQL TYPE 변수명 TABLE OF RECORD
  • 동적쿼리(Dynamic Query)
Interrrupt
Interrrupt
프로그래밍, 개발, IT, 일상
Interrrupt
일상의 인터럽트
Interrrupt
전체
오늘
어제
반응형
  • 분류 전체보기 (78)
    • Programing (26)
      • C# (12)
      • WPF-FrameWork (5)
      • JavaScript (7)
      • React-FrameWork (2)
    • DB (14)
      • 오라클 (14)
    • ETC (5)
      • 기타 (4)
      • 자료구조 (1)
      • 마크업 (1)
    • Tools (4)
    • 토이프로젝트 (4)
      • C# WPF로 자동매매프로그램 만들기 (4)
    • OS (2)
      • 리눅스 (1)
      • Window11 (1)
    • CS지식 (8)
      • 프론트엔드 (4)
      • 백엔드 (4)
    • 일상 (12)
      • 취미 (3)
      • 맛집 (9)
hELLO · Designed By 정상우.
Interrrupt
예외처리(EXCEPTION)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.