2) 미리 정의되지 않은 Oracle 에러 (암시적 발생)
EXCEPTION이 너무 많기 때문에, 모든 예외를 미리 정의할 수 없다. 따라서 미리 정의되지 않은 오류를 트랩할 수 있는 방법이 필요하다. 다음은 미리 정의 되지 않은 오류를 트랩하는 예제이다. Oracle 서버 오류 02290을 트랩하는 것이다.
DECLARE
emp_rec emp%ROWTYPE ;
e_ck EXCEPTION ;
PRAGMA EXCEPTION_INIT (e_ck , -2290) ;
BEGIN
SELECT * INTO emp_rec FROM emp WHERE ename = UPPER('&name') ;
IF emp_rec.sal < 2000 THEN
UPDATE emp SET sal = &salary WHERE empno = emp_rec.empno ;
END IF ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('NO DATA') ;
WHEN E_CK THEN
DBMS_OUTPUT.PUT_LINE ('Invalid Salary') ;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (SQLERRM) ;
END ;
/
EXCEPTION 타입의 변수를 선언하고, PRAGMA EXCEPTION_INIT (변수, -오류 번호)로 선언한다(오류 번호 앞에 –가 붙는 것에 유의하라). 그리고 EXCEPTION에서 해당 예외에 대한 처리를 하는 것을 볼 수 있다.
'PL SQL' 카테고리의 다른 글
PL/SQL 예외 처리 (Exception Handling) - 5 (RAISE_APPLICATION_ERROR) (2) | 2016.07.06 |
---|---|
PL/SQL 예외 처리 (Exception Handling) - 4 (사용자 정의 에러) (0) | 2016.07.06 |
PL/SQL 예외 처리 (Exception Handling) - 2 (미리 정의된 에러) (0) | 2016.07.06 |
PL/SQL 예외 처리 (Exception Handling) - 1 (예외 처리의 정의와 발생 상황, 유형) (0) | 2016.07.06 |
PL/SQL 명시적 커서, 암시적 커서 (Implicit Cursor, Explicit Cursor) - 2 (0) | 2016.07.06 |