ORA-06502 數值錯誤)。正確程式碼順利執行;錯誤代碼 (如變數溢位) 觸發預定義例外,SQL*Plus Worksheet 顯示對應錯誤畫面與提示訊息。
DECLARE
exception_name EXCEPTION;
RAISE exception_name;
EXCEPTION
WHEN exception_name1 THEN handling_code1;
WHEN exception_name2 THEN handling_code2;
WHEN OTHERS THEN default_code;
情境: 查詢 SCOTT.EMP 中 EMPNO=7566 員工薪資,若不在 900~2600 區間則觸發 SALARY_ERROR 例外並提示。
DECLARE
v_salary NUMBER;
salary_err EXCEPTION;
BEGIN
SELECT sal INTO v_salary FROM scott.emp WHERE empno = 7566;
IF v_salary NOT BETWEEN 900 AND 2600 THEN
RAISE salary_err;
END IF;
DBMS_OUTPUT.PUT_LINE('薪資正常: ' || v_salary);
EXCEPTION
WHEN salary_err THEN
DBMS_OUTPUT.PUT_LINE('異常: 員工 7566 薪資 ' || v_salary || ' 超出合理區間 [900, 2600]');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('異常: 找不到員工 7566');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('其他異常: ' || SQLERRM);
END;
WHEN OTHERS。RAISE_APPLICATION_ERROR 回傳標準化錯誤碼給呼叫端應用。