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 因为PRAGMA EXCEPTION_INIT命令把这个变量(-01455)连接到 这个Oracle错误,该语句的语法如下: PRAGMA EXCEPTION_INIT(exception_name, error_number); 其中error_number是负数,因为错误号被认为负数,当定义错误时记住使用负号
3 自定义异常
异常不一定必须是oracle返回的系统错误,用户可以在自己的应用程序中创 建可触发及可处理的自定义异常 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;