반응형
오라클 프로시저 예외 처리 / 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 |