非预定义错误
非预定义错误即其他标准的Oracle错误。对于这种异常情况的处理,需要用户在程序中定义,然后由Oracle自动将其引发。
对于这类异常情况的处理,首先必须对非定义的Oracle错误进行定义,
步骤如下。
1)在PL/SQL块的定义部分定义异常情况:
<异常情况> EXCEPTION;2)将其定义好的异常情况,与标准的Oracle错误联系起来,使用
EXCEPTION_INIT语句:
PRAGMA EXCEPTION_INIT(<异常情况>,<错误代码>);3)在PL/SQL块的异常情况处理部分对异常情况做出相应的处理:
需求:修改编写为7788的雇员所属的部门编号为99。
DECLARE e_integrity EXCEPTION; PRAGMA EXCEPTION_INIT(e_integrity,-2291); --2291为Oracle定义的错误号,违背了完整性约束条件BEGIN UPDATE emp SET deptno = 99 WHERE empno = 7788; EXCEPTION WHEN e_integrity THEN Dbms_Output.put_line('该部门不存在');END;备注:
RAISE_APPLICATION_ERROR存储过程,可以重新定义异常错误消息,它为应用程序提供了一种与Oracle交互的方法。
RAISE_APPLICATION_ERROR的语法:
RAISE_APPLICATION_ERROR(error_number,error_message);
在语法中:
error_number表示用户为异常指定的编号。该编号必须是介于-20000~-20999之间的负整数。
error_message表示用户为异常指定的消息文本。消息长度可长达2048字节。错误消息是与error_number表示关联的文本。