< 예외처리부 EXCEPTION >
예외(EXCEPTION) : 실행 중 발생되는 오류
[표현법]
EXCEPTION
WHEN 예외명1 THEN 예외처리구문1;
WHEN 예외명2 THEN 예외처리구문2;
...
WHEN OTHERS THEN 예외처리구문;
* 시스템 예외 (오라클에서 미리 정의해둔 예외)
- NO_DATA_FOUND : SELECT한 결과가 한 행도 없을 경우
- TOO_MANY_ROWS : SELECT한 결과가 여러행일 경우
- ZERO_DIVIDE : 0으로 나누기 했을 경우
- DUP_VAL_ON_INDEX : UNIQUE 제약조건에 위배되었을 경우
...
1) ZERO_DIVIDE 예외 : 0으로 나누기했을 경우
DECLARE
RESULT NUMBER;
BEGIN
RESULT := 10/ &숫자;
DBMS_OUTPUT.PUT_LINE('RESULT : '|| RESULT);
EXCEPTION
--WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE('나누기 연산시 0으로 나눌 수 없습니다.');
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('나누기 연산시 0으로 나눌 수 없습니다.');
END;
2) DUP_VAL_ON_INDEX 예외 : UNIQUE 제약조건 위배
BEGIN
UPDATE EMPLOYEE
SET EMP_ID = '&변경할사번'
WHERE EMP_NAME = '노옹철';
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE('이미 존재하는 사번입니다.');
END;
/
3) TOO_MANY_ROWS : SELECT 결과가 여러행일 경우
NO_DATA_FOUND : SELECT 결과가 한행도 없을 경우
DECLARE
EID EMPLOYEE.EMP_ID%TYPE;
ENAME EMPLOYEE.EMP_NAME%TYPE;
BEGIN
SELECT EMP_ID,EMP_NAME
INTO EID, ENAME
FROM EMPLOYEE
WHERE MANAGER_ID = &사수사번;
DBMS_OUTPUT.PUT_LINE(EID || ', '|| ENAME);
EXCEPTION
WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE('너무 많은 사원이 조회되었습니다.');
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('조회결과가 없습니다.');
END;
/
'ORACLE' 카테고리의 다른 글
ORACLE 14. OBJECT(TRIGGER) (1) | 2022.11.29 |
---|---|
ORACLE 13. PLSQL _반복문 (0) | 2022.11.25 |
ORACLE 13. PLSQL _조건문 (0) | 2022.11.25 |
ORACLE 12. OBJECT (SEQUENCE) (0) | 2022.11.25 |
ORACLE 11. OBJECT (VIEW) _ VIEW 옵션 (0) | 2022.11.24 |