DECLARE X NUMBER; BEGIN X:= 'yyyy';--Error Here EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION HANDED'); END;
2 自定義異常處理
DECLARE BAD_ROWID EXCEPTION; X ROWID; PRAGMA EXCEPTION_INIT(BAD_ROWID,-01445); BEGIN SELECT ROWID INTO X FROM TAB WHERE ROWNUM=1; EXCEPTION WHEN BAD_ROWID THEN DBMS_OUTPUT.PUT_LINE('CANNOT QUERY ROWID FROM THIS VIEW'); END; 注重:-01445 因?yàn)镻RAGMA EXCEPTION_INIT命令把這個(gè)變量(-01455)連接到 這個(gè)Oracle錯(cuò)誤,該語(yǔ)句的語(yǔ)法如下: PRAGMA EXCEPTION_INIT(exception_name, error_number); 其中error_number是負(fù)數(shù),因?yàn)殄e(cuò)誤號(hào)被認(rèn)為負(fù)數(shù),當(dāng)定義錯(cuò)誤時(shí)記住使用負(fù)號(hào)
3 自定義異常
異常不一定必須是oracle返回的系統(tǒng)錯(cuò)誤,用戶可以在自己的應(yīng)用程序中創(chuàng) 建可觸發(fā)及可處理的自定義異常 DECLARE SALARY_CODE VARCHAR2(1); INVALID_SALARY_CODE EXCEPTION; BEGIN SALARY_CODE:='X'; IF SALARY_CODE NOT IN('A', 'B', 'C') THEN RAISE INVALID_SALARY_CODE; END IF; EXCEPTION WHEN INVALID_SALARY_CODE THEN DBMS_OUTPUT.PUT_LINE('INVALID SALARY CODE'); END;