본문 바로가기

db/oracle

oracle 프로시저 예외 처리

반응형

오라클 프로시저 예외 처리 / oracle procedure exception

oracle 프로시저 예외 처리
  • 아래 프로시저는 insert를 2번 처리 후 예외 처리 하는 프로시저입니다.
  • insert 2번 처리한 이유는 exception 발생 시 rollback를 확인하기 위해서였습니다.
CREATE OR REPLACE PROCEDURE INSERT_EMP (
    P_EMPNO IN VARCHAR2,
    P_ENAME IN EMPLOYEES.NM%TYPE
)
IS
    P_MSG VARCHAR2(2000);
BEGIN
    BEGIN
        INSERT INTO EMPLOYEES (ID, NM)
        VALUES (SEQ_HO_999.NEXTVAL, 'ddddddfd');
        
        INSERT INTO EMPLOYEES (ID, FIRST_NAME)
        VALUES (TO_NUMBER(P_EMPNO), P_ENAME);
        COMMIT;
    EXCEPTION	-- insert 오류시 아래 로직을 실행합니다.
        WHEN OTHERS THEN
            ROLLBACK;	-- 에러 발생 시 롤백을 진행합니다.
            P_MSG := SQLERRM;	-- 에러
            INSERT INTO TB_HO_999 (NO, PARAM_LOG, NM)	-- 에러를 저장
            VALUES (SEQ_HO_999.NEXTVAL, P_MSG, SYSDATE);
    END;
END INSERT_EMP;

 

프로시저 목적
  • 이 프로시저는 EMPLOYEES 테이블에 새로운 직원 레코드를 삽입하기 위해 설계되었습니다.
매개변수
  • P_EMPNO : 직원 번호를 나타내는 VARCHAR2 유형의 입력 매개변수입니다.
  • P_ENAME : 직원 이름을 나타내는 EMPLOYEES.NM% TYPE 유형의 입력 매개변수입니다.

※ EMPLOYEES.NM%TYPE : 테이블명. 칼럼명의 타임을 따른다는 겁니다.

프로시저 본문

 

1. BEGIN... END 블록

  • 이 블록은 프로시저의 주요 로직을 캡슐화합니다.

2. 내부 BEGIN ... EXCEPTION 블록

  • 이 블록은 삽입 프로세스 중에 발생할 수 있는 예외를 처리합니다.

3. INSERT 문 실행

4. COMMIT 문

  • INSERT 문이 모두 성공적으로 실행되면 COMMIT 문이 실행되어 데이터베이스에 대한 변경 사항이 영구적으로 저장됩니다.

5. EXCEPTION 핸들러

  • WHEN OTHERS THEN : 이 절은 내부 블록 내에서 발생할 수 있는 모든 예외를 포착합니다.
  • ROLLBACK : 예외가 발생하면 ROLLBACK 문이 실행되어 현재 트랜잭션 내에서 수행된 모든 변경 사항이 취소됩니다.
  • P_MSG := SQLERRM; : 예외와 관련된 오류 메시지가 P_MSG 변수에 저장됩니다.
  • INSERT INTO TB_HO_999... : 이 문은 오류 메시지, 타임스탬프 및 기타 관련 정보를 기록하여 TB_HO_999 테이블에 오류 로그 항목을 삽입합니다.
반응형

'db > oracle' 카테고리의 다른 글

오라클 to_timestamp 형변환  (0) 2025.01.20
Tomcat 9.0.98 미만 버전 보안 취약점  (0) 2025.01.19
oracle mssql truncate table 비교  (0) 2025.01.18
oracle 프로시저 생성 실행  (0) 2025.01.18
oracle to_timestamp 형변환  (0) 2025.01.15