728x90
반응형
728x170
■ 예외 처리시 SQLCODE와 SQLERRM 키워드를 사용하는 방법을 보여준다.
▶ 예제 코드 (SQL)
CREATE OR REPLACE PROCEDURE DeleteDepartment(P_DEPTNO IN SCOTT.DEPT.DEPTNO%TYPE)
IS
BEGIN
DELETE FROM SCOTT.DEPT WHERE DEPTNO = P_DEPTNO;
EXCEPTION
WHEN OTHERS
THEN
DECLARE
V_ERROR_CODE NUMBER := SQLCODE;
V_ERROR_MESSAGE VARCHAR2(512) := SQLERRM;
BEGIN
IF V_ERROR_CODE = -2292 -- 자식 레코드가 있는 경우 처리한다.
THEN
DELETE FROM EMP WHERE DEPTNO = P_DEPTNO;
DELETE FROM DEPT WHERE DEPTNO = P_DEPTNO;
ELSIF V_ERROR_CODE = -2291 -- 부모 키가 없는 경우 처리한다.
THEN
DBMS_OUTPUT.PUT_LINE('부서 번호에 해당하는 부서가 없습니다 : ' || TO_CHAR (P_DEPTNO));
ELSE
DBMS_OUTPUT.PUT_LINE('에러가 발생했습니다 : ' || V_ERROR_MESSAGE);
END IF;
END;
END;
SET SERVEROUTPUT ON;
BEGIN
DeleteDepartment(10);
END;
728x90
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] USER_TAB_COLUMNS 테이블을 참조해 컬럼 정보 조회하기 (0) | 2019.10.24 |
---|---|
[DATABASE/ORACLE] NLS_DATABASE_PARAMETERS 테이블 : 데이터베이스 사용 문자 집합 구하기 (0) | 2019.10.24 |
[DATABASE/ORACLE] CAST 함수 : 자료형 변환하기 (0) | 2019.10.24 |
[DATABASE/ORACLE] SUBTYPE ~ IS 명령 : 비제한 서브 타입 정의하기 (0) | 2019.10.24 |
[DATABASE/ORACLE] USER 키워드 : 현재 사용자 구하기 (0) | 2019.10.24 |
[DATABASE/ORACLE] PL/SQL에서 사전 정의된 예외 (0) | 2019.10.24 |
[DATABASE/ORACLE] PRAGMA EXCEPTION_INIT 명령 : 사용자 정의 예외와 오류 번호 연결시키기 (0) | 2019.10.24 |
[DATABASE/ORACLE] 커서 사용하기 (0) | 2019.10.24 |
[DATABASE/ORACLE] LEAST 함수 : 최소값 구하기 (0) | 2019.10.24 |
[DATABASE/ORACLE] FOR ~ REVERSE문 사용하기 (0) | 2019.10.24 |
댓글을 달아 주세요