Oracle

Oracle.예외처리와 트랜잭션

calla1013 2025. 6. 3. 16:33
Oracle PL/SQL 예외 처리와 트랜잭션 완벽 가이드

💡 Oracle PL/SQL 핵심 완벽 가이드 – 예외 처리와 트랜잭션

Oracle PL/SQL에서 신뢰성 있고 견고한 시스템을 구현하려면 반드시 예외 처리와 트랜잭션 제어를 잘 다뤄야 합니다. 이 글에서는 실무에 꼭 필요한 핵심 문법과 예제를 통해 확실하게 이해할 수 있도록 도와드립니다.

1. 예외 처리 (Exception Handling)

PL/SQL에서 오류 발생 시, 프로그램이 중단되지 않도록 로직으로 예외를 안정적으로 처리하는 방법입니다.

📌 예외 처리 구문 기본 형태
BEGIN
  -- 실행 구문
EXCEPTION
  WHEN 예외1 THEN
    처리 구문1;
  WHEN 예외2 THEN
    처리 구문2;
  WHEN OTHERS THEN
    처리 구문N;
END;

1.1 시스템 예외 처리 예제

DECLARE
  v_result NUMBER;
BEGIN
  v_result := 10 / 0;  -- 0으로 나누기 → ZERO_DIVIDE 발생
EXCEPTION
  WHEN ZERO_DIVIDE THEN
    DBMS_OUTPUT.PUT_LINE('0으로 나눌 수 없습니다!');
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('알 수 없는 오류: ' || SQLERRM);
END;

1.2 SQLCODE와 SQLERRM으로 오류 정보 출력

EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('오류 코드: ' || SQLCODE);
    DBMS_OUTPUT.PUT_LINE('오류 메시지: ' || SQLERRM);

1.3 사용자 정의 예외

DECLARE
  e_salary_low EXCEPTION;
  v_salary NUMBER := 500;
BEGIN
  IF v_salary < 1000 THEN
    RAISE e_salary_low;
  END IF;
EXCEPTION
  WHEN e_salary_low THEN
    DBMS_OUTPUT.PUT_LINE('급여가 너무 낮습니다!');
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
⚠️ 팁: 사용자 정의 예외는 반드시 RAISE로 명시적으로 발생시켜야 합니다.

2. 트랜잭션(Transaction) 제어

트랜잭션은 여러 SQL 작업을 하나의 단위로 묶어 처리하는 기능으로, 데이터 무결성 보장에 필수입니다.

2.1 COMMIT / ROLLBACK 기본

BEGIN
  UPDATE employees SET salary = salary + 100 WHERE department_id = 10;
  COMMIT;  -- 변경 사항 영구 반영
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;  -- 오류 발생 시 모든 변경 취소
    DBMS_OUTPUT.PUT_LINE('작업 실패: ' || SQLERRM);
END;

2.2 SAVEPOINT를 활용한 부분 롤백

BEGIN
  INSERT INTO log_table VALUES ('Step 1');
  SAVEPOINT step1;

  UPDATE employees SET salary = salary * 1.1 WHERE department_id = 20;
  SAVEPOINT step2;

  DELETE FROM employees WHERE salary > 100000;

  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK TO step2;  -- 특정 시점까지만 롤백
    DBMS_OUTPUT.PUT_LINE('Rollback to step2: ' || SQLERRM);
END;

✅ 트랜잭션 제어 키워드 요약

  • COMMIT: 모든 변경사항을 확정
  • ROLLBACK: 전체 또는 저장 지점까지 되돌리기
  • SAVEPOINT: 롤백 시점을 설정
✔ 트랜잭션과 예외 처리를 함께 활용하면, 오류 발생 시 데이터가 잘못 저장되는 것을 방지할 수 있습니다.

3. 마무리

예외 처리와 트랜잭션은 PL/SQL의 가장 중요한 요소 중 하나입니다. 다양한 예외 상황을 꼼꼼히 처리하고, 트랜잭션을 적절히 관리하여 안정적이고 신뢰할 수 있는 데이터베이스 로직을 구현해보세요.

'Oracle' 카테고리의 다른 글

Oracle.PL/SQL기본  (0) 2025.06.03
Oracle.정규식(Regular Expressions)  (0) 2025.06.03
Oracle.SQL고급  (0) 2025.06.03
Oracle.조인과 서브쿼리  (0) 2025.05.31
Oracle.그룹 쿼리와 집계함수  (1) 2025.05.31