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 | 위에 명시되지 않은 기타 모든 예외 |
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가 존재하지 않습니다.
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 블록을 활용하면 예상치 못한 오류에도 프로그램이 정상적으로 종료되거나 적절한 메시지를 보여줄 수 있습니다.
실무에서도 자주 사용되니 꼭 익혀두시길 바랍니다. 다음에는 실제 트랜잭션 처리와 연계한 예외 처리 방법도 다뤄보겠습니다.
궁금한 점이나 더 알고 싶은 예외가 있다면 댓글로 남겨주세요! 😊
혹시 실습해보고 싶은 쿼리가 있다면 말씀해주세요. 함께 만들어볼 수 있어요!
| [오라클 DB 스터디] Oracle SUBPROGRAM을 배웁니다 (0) | 2025.04.30 |
|---|---|
| [오라클 DB 스터디] Sequence / Synonym (0) | 2025.04.23 |
| [오라클 DB 스터디] View (0) | 2025.04.22 |
| [오라클 DB 스터디] 제약조건 (0) | 2025.04.21 |
| [오라클 DB 스터디] 커서(Cursor) - 2 (0) | 2025.03.30 |
댓글 영역