상세 컨텐츠

본문 제목

[오라클 DB 스터디] Oracle Exception(예외처리)을 배웁니다

프로그래밍 도서

by DeepinDev 2025. 4. 30. 23:03

본문

 

Oracle PL/SQL을 배우다 보면 어느 순간 마주치게 되는 개념이 있습니다. 바로 Exception(예외처리)입니다. 프로그램을 짜다 보면 예상치 못한 오류가 발생할 수 있는데, 이때 시스템이 그냥 멈춰버리면 사용자나 개발자 모두 곤란하겠죠? 이를 방지하기 위해 PL/SQL에서는 EXCEPTION 블록을 통해 오류를 안전하게 처리할 수 있도록 도와줍니다.

이번 글에서는 Oracle에서의 예외 처리 개념과 사용하는 방법, 그리고 실습 예제를 통해 실제로 어떻게 활용되는지 알아보겠습니다.


예외 처리란?

예외(Exceptions)는 프로그램 실행 도중 발생하는 **예외적인 상황(오류)**을 의미합니다. 예를 들어, 존재하지 않는 테이블에 접근하려 하거나 0으로 나누는 연산을 시도할 경우 Oracle은 에러를 발생시킵니다. 이런 상황에서도 프로그램이 멈추지 않고, 우아하게 처리할 수 있도록 도와주는 것이 예외 처리입니다.


기본 구조

PL/SQL 블록에서 예외 처리를 사용하는 기본 구조는 아래와 같습니다:

BEGIN
   -- 실행할 구문
EXCEPTION
   WHEN 예외_이름 THEN
      -- 예외 발생 시 실행할 구문
END;

자주 사용하는 예외 종류

Oracle에서는 여러 가지 미리 정의된 예외를 제공합니다. 자주 사용되는 것 몇 가지를 소개합니다:

예외 이름 설명

NO_DATA_FOUND SELECT 문의 결과가 없을 때
TOO_MANY_ROWS SELECT 결과가 2개 이상일 때
ZERO_DIVIDE 0으로 나누기를 시도했을 때
OTHERS 위에 명시되지 않은 기타 모든 예외

예제 1: NO_DATA_FOUND 처리하기

DECLARE
   v_name employees.last_name%TYPE;
BEGIN
   SELECT last_name INTO v_name
   FROM employees
   WHERE employee_id = 9999;  -- 없는 ID

   DBMS_OUTPUT.PUT_LINE('이름: ' || v_name);
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('해당 사원 ID가 존재하지 않습니다.');
END;

결과:

해당 사원 ID가 존재하지 않습니다.


예제 2: OTHERS로 모든 예외 처리하기

BEGIN
   -- 0으로 나누기
   DBMS_OUTPUT.PUT_LINE(10 / 0);
EXCEPTION
   WHEN ZERO_DIVIDE THEN
      DBMS_OUTPUT.PUT_LINE('0으로 나눌 수 없습니다.');
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('기타 예외 발생: ' || SQLERRM);
END;

사용자 정의 예외 만들기

PL/SQL에서는 사용자가 직접 예외를 정의하고 발생시킬 수도 있습니다.

DECLARE
   e_custom EXCEPTION;
BEGIN
   RAISE e_custom;
EXCEPTION
   WHEN e_custom THEN
      DBMS_OUTPUT.PUT_LINE('사용자 정의 예외 발생!');
END;

마무리

예외 처리는 시스템 안정성과 사용자 경험을 지키기 위한 중요한 기술입니다. Oracle의 EXCEPTION 블록을 활용하면 예상치 못한 오류에도 프로그램이 정상적으로 종료되거나 적절한 메시지를 보여줄 수 있습니다.

실무에서도 자주 사용되니 꼭 익혀두시길 바랍니다. 다음에는 실제 트랜잭션 처리와 연계한 예외 처리 방법도 다뤄보겠습니다.


궁금한 점이나 더 알고 싶은 예외가 있다면 댓글로 남겨주세요! 😊
혹시 실습해보고 싶은 쿼리가 있다면 말씀해주세요. 함께 만들어볼 수 있어요!

관련글 더보기

댓글 영역