专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > DBA实战 > DBA课程 > Oracle教程:PL/SQL引发应用程序异常处理

Oracle教程:PL/SQL引发应用程序异常处理

文章来源: 更新时间:2016/7/20 15:47:45

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

Oracle教程:PL/SQL引发应用程序异常处理,在Oracle开发中,遇到的系统异常都有对应的异常码,在应用系统开发中,用户自定义的异常也可以指定一个异常码和异常信息,Oracle系统为用户预留了自定义异常码,其范围介于-20000到-20999之间的负整数。引发应用程序异常的语法是:

RAISE_APPLICATION_ERROR(异常码,异常信息)

案例12:引发系统异常

代码演示:引发应用系统异常

SQL> DECLARE

  2      sal emp.sal%TYPE;

  3      myexp EXCEPTION;

  4  BEGIN

  5      SELECT sal INTO sal FROM emp WHERE ename='JAMES';

  6      IF sal<5000 THEN

  7         RAISE myexp;

  8      END IF;

  9  EXCEPTION

 10      WHEN NO_DATA_FOUND THEN

 11           dbms_output.put_line('NO RECORDSET FIND!');

 12      WHEN MYEXP THEN

 13           RAISE_APPLICATION_ERROR(-20001,'SAL IS TO LESS!'); 

 14  END;

 15  /

ORA-20001: SAL IS TO LESS! 

ORA-06512: line 14

代码解析:

① 引发应用系统异常,指明异常码和异常信息。

② 在控制台上显示异常码和异常信息。

如果要处理未命名的内部异常,必须使用OTHERS异常处理器。也可以利用PRAGMA EXCEPTION_INIT把一个异常码与异常名绑定。

PRAGMA由编译器控制,PRAGMA在编译时处理,而不是在运行时处理。EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码绑定起来,这样可以通过异常名引用任意的内部异常,并且可以通过异常名为异常编写适当的异常处理器。PRAGMA EXCEPTION_INIT的语法是:

PRAGMA EXCEPTION_INIT(异常名,异常码)

这里的异常码可以是用户自定义的异常码,也可以是Oracle系统的异常码。

案例13:PRAGMA EXCEPTION_INIT异常

代码演示:PRAGMA EXCEPTION_INIT异常

<<outterseg>>

DECLARE

  null_salary EXCEPTION;

  PRAGMA EXCEPTION_INIT(null_salary, -20101); 

BEGIN

  <<innerStart>> 

  DECLARE

    curr_comm NUMBER;

  BEGIN

    SELECT comm INTO curr_comm FROM emp WHERE empno = &empno;

    IF curr_comm IS NULL THEN   

         RAISE_APPLICATION_ERROR(-20101, 'Salary is missing'); 

    ELSE

      dbms_output.put_line('有津贴');

    END IF;

  END; 

EXCEPTION

  WHEN NO_DATA_FOUND THEN

          dbms_output.put_line('没有发现行');

  WHEN null_salary THEN

          dbms_output.put_line('津贴未知'); 

  WHEN OTHERS THEN

           dbms_output.put_line('未知异常');

END;

代码解析:

① 把异常名称null_salary与异常码-20101关联,该语句由于是预编译语句,必须放在声明部分。也就是说-20101的异常名称就是null_salary。

② 嵌套PL/SQL语句块

③ 在内部PL/SQL语句块中引发应用系统异常-20101。

④ 在外部的PL/SQL语句块中就可以用异常名null_salary进行捕获。

本文地址:http://www.cuug.com.cn/dba/kecheng/12525058031.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1