본문 바로가기
카테고리 없음

오라클 예외처리 (PL/SQL)

by sftt 2023. 12. 4.

오라클 예외처리 (PL/SQL)

개요

오라클 데이터베이스에서 PL/SQL 문법을 사용하여 개발을 할 때, 예외 처리는 매우 중요한 부분이다. 예외 처리는 프로그램 실행 도중 발생할 수 있는 오류나 예외 상황에 대처하는 방법을 제공한다. 이로써 예외가 발생하더라도 프로그램이 비정상 종료되지 않고 오류를 처리할 수 있다.

예외 처리 구문

예외 처리의 기본 구조는 다음과 같다.

BEGIN
    -- 예외가 발생할 수 있는 코드
EXCEPTION
    WHEN 예외종류1 THEN
        -- 처리할 코드
    WHEN 예외종류2 THEN
        -- 처리할 코드
    ...
    WHEN OTHERS THEN
        -- 처리할 코드
END;

위의 예제에서 EXCEPTION 키워드로 시작하여 예외 처리 코드 블록이 시작되며, WHEN 키워드로 예외의 종류를 지정한다. THEN 키워드 이후에는 해당 예외가 발생했을 때 실행될 코드가 위치한다. WHEN 키워드로 정의된 예외 종류 중 어느 것에도 매치되지 않을 경우, WHEN OTHERS THEN 절에 정의된 코드가 실행된다.

기본 예외 종류

오라클에서는 다양한 예외 종류를 제공한다. 몇 가지 예외 종류의 예는 다음과 같다.

  • NO_DATA_FOUND: 데이터를 조회하지 못했을 때 발생하는 예외
  • ZERO_DIVIDE: 0으로 나누기를 시도할 때 발생하는 예외
  • TOO_MANY_ROWS: 단일 행을 기대했으나 여러 행이 조회되었을 때 발생하는 예외

예외 처리 방법

예외를 처리하는 방법에는 크게 두 가지가 있다.

  1. 예외를 무시하고 실행을 계속한다.

     BEGIN
         -- 예외가 발생할 수 있는 코드
     EXCEPTION
         WHEN 예외종류1 THEN
             -- 처리할 코드
             NULL;
         WHEN 예외종류2 THEN
             -- 처리할 코드
             NULL;
         ...
         WHEN OTHERS THEN
             -- 처리할 코드
             NULL;
     END;

    위의 방법은 예외가 발생할 경우, 예외에 대한 처리를 분기하지 않고 그냥 넘어가는 방법이다. 때로는 예외상황에 대한 특별한 처리 없이 그냥 넘어가도록 구현하고자 할 때 사용된다.

  2. 예외를 적절하게 처리하고 실행을 중단한다.

     BEGIN
         -- 예외가 발생할 수 있는 코드
     EXCEPTION
         WHEN 예외종류1 THEN
             -- 처리할 코드
             RAISE;
         WHEN 예외종류2 THEN
             -- 처리할 코드
             RAISE;
         ...
         WHEN OTHERS THEN
             -- 처리할 코드
             RAISE;
     END;

    위의 방법은 예외가 발생할 경우, 예외에 대한 처리 후 RAISE 문을 통해 예외를 다시 발생시키는 방법이다. 이렇게 하면 발생한 예외로 인해 프로그램이 중단되도록 할 수 있다.

사용자 정의 예외

때로는 내장된 예외 종류로 제공되지 않는 예외 상황에 대해 직접 예외를 정의하고 처리해야 하는 경우가 있다. 이때 EXCEPTION 섹션에서 사용자 정의 예외를 정의할 수 있다.

DECLARE
    예외_이름 EXCEPTION;
BEGIN
    IF 조건 THEN
        RAISE 예외_이름;
    END IF;
EXCEPTION
    WHEN 예외_이름 THEN
        -- 처리할 코드
END;

마무리

위에서는 오라클 데이터베이스에서 PL/SQL을 사용하여 예외 처리하는 방법에 대해 설명하였다. 예외 처리는 프로그램의 로버스트성을 높이고, 응용 프로그램에서 발생할 수 있는 다양한 종류의 오류에 대응하는 강력한 도구이다. 잘 활용하여 안정적이고 오류 처리가 잘 이루어지는 프로그램을 개발할 수 있도록 노력해야 한다.

댓글