WEB开发网
开发学院数据库Oracle 从零开始学Oracle—异常处理(八) 阅读

从零开始学Oracle—异常处理(八)

 2009-04-09 13:13:33 来源:WEB开发网   
核心提示: 以上代码的问题是,只有条件满足 才会引发异常,从零开始学Oracle—异常处理(八)(2),否则永远都不会执行此句.并且当有多个语句都有可能会引发此异常时,代码就过于冗余.并且都要显示的引发异常,能不能让系统帮我们维护自定义异常了,当有异常引发时 自动通知Oracle服务器处理异常prag

以上代码的问题是,只有条件满足 才会引发异常,否则永远都不会执行此句.

并且当有多个语句都有可能会引发此异常时,代码就过于冗余.并且都要显示

的引发异常,能不能让系统帮我们维护自定义异常了,当有异常引发时 自动

通知Oracle服务器处理异常

pragma指令

declare
   PK_conflict Exception;  --用户定义异常
   pragma  Exception_init(PK_conflict -1);  --编译指令 可以把异常捆绑到Oracle 并覆盖预定义的异常
   iCount int:=0;                                     这里的-1 代表主键冲突
begin
   insert into emp(empno,ename) values('7369','FeiYang');
Exception
    when PK_conflict then   --处理异常
      DBMS_output.put_line('表中已经有这条记录了,主键冲突');
end;

为了给用户友好的错误提示.用此函数可以定义友好的提示。

DBMS_output.put_line()函数只有sqlPlus 客户端支持.
Raise_Application_Error
  .用于创建用户定义的错误消息的过程
  .可以再执行部分和异常部分使用
  .必须介于 -20000 和 -20999之间
  .可以存储2M的错误信息
declare
   PK_conflict Exception;  --用户定义异常
   pragma  Exception_init(PK_conflict -1);  --编译指令
   iCount int:=0;
begin
   insert into emp(empno,ename) values('7369','FeiYang');
Exception
    when PK_conflict then   --处理异常
      Raise_Application_Error(-20001,'表中已经有这条记录了'); --注意参数的前后顺序
end;

Tags:开始 Oracle 异常

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接