- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
理解异常处理 异常处理语句块结构 异常处理结构 预定义异常 自定义异常 异常的作用域范围 使用EXCEPTION_INIT 使用RAISE_APPLICATION_ERROR 抛出异常 处理异常 当异常被触发时,控制将转到语句块的异常处区,在异常处理区由一个或多个异常处理器来实现异常处理,异常处理器是与当前触发的异常相关的错误产生时的所执行的代码,在异常处理区中基本的异常处理语法如下所示: EXCEPTION WHEN exception_name THEN sequence_of_statements1; WHEN exception_name THEN sequence_of_statements2; [ WHEN OTHERS THEN sequence_of_statements3; ] END; 异常的传递 执行区的异常传递结构 声明时异常传递示意图 异常处理器中的异常传递过程 1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司 PL/SQL从入门到精通视频 第十二讲:异常处理机制 课程安排 理解异常处理 自定义异常 异常的传递 异常处理简介 异常处理语法 预定义异常 基本的异常处理结构的PL/SQL块包含3个部分: (1)在定义区,定义异常,如果使用预定义异常的话,则不用在定义区定义异常。 (2)在执行区,可以显示的触发异常,也可以由PL/SQL引擎触发异常。 (3)只要在执行过程中出现了异常,那么执行区中后续的语句将立即停止执行,语句执行流跳转到异常处理区。 在PL/SQL语句块中,无论是预定义错误还是自定义错误,Oracle在内部都会隐含的触发一个错误,每个错误都有一个序号,例如在上一节的示例中使用的SQLCODE就是异常的编码,SQLERRM用来获取异常的信息。但是在PL/SQL进行异常处理时,不能直接使用异常编码,必须使用一个名字来引用和处理异常,因此PL/SQL为一些公共的错误定义了一系列的预定义异常,比如NO_DATA_FOUND异常,当没有检索到任何数据时会触发该异常。 声明异常 作用域范围 使用EXCEPTION_INIT 使用RAISE_APPLICATION_ERROR 抛出异常 处理异常 使用SQLCODE和SQLERRM 在同一个块中不能声明一个异常超过2次,但是可以在不同的块中声明相同的异常 在一个块中声明的异常在本块中和其子块中可见,也就是说内存块可以引用在外层块中定义的异常,可以引用在本块中定义的异常,但不能引用在子块中定义的异常 如果在子块重新声明外部块中同名的异常,将覆盖外部块中的全局异常,使得子块不能引用外部块中的全局的异常,但是可以在标签块中声明相同的异常。 如果有一些异常并没有异常名称,比如一些ORA-开头的异常并没有一个友好的预定义的异常定义,此时在WHEN子句中无法使用具体的异常名称,必须要使用OTHERS异常处理器进行捕捉。通过EXCEPTION_INIT编译指示,可以为这些不在预定义异常范围之类的异常添加名称。 注意:编译指示是指能在编译期而非运行时进行处理的编译指令。 RAISE_APPLICATION_ERROR是在子程序内部使用时,能够帮助用户从存储子程序中抛出用户自定义的错误消息(本书第13章将会详细介绍子程序)。这样就能将错误消息报告给应用程序而避免返回未捕获异常,是Oracle中的一个内置函数,用户定义的错误被传递到过程外部的方式与Oracle错误相似,其使用语法如下所示: RAISE_APPLICATION_ERROR(error_number, error_message, [keep_errors]); 预定义异常(其中也包含使用编译指示EXCEPTION_INIT与Oracle错误编号关联起来的用户自定义异常)是当有关Oracle错误产生时,由Oracle隐式抛出的;自定义异常需要显示的使用RAISE语句进行抛出。自定义异常抛出的位置需要根据业务逻辑的规则来进行,比如员工提成大于工资时,可能需要抛出异常。 注意:RAISE语句也可以抛出预定义的异常,这使得异常的抛出与处理变得更加灵活。 RAISE语句的使用非常简单,基本语法为: RAISE exception_name; 执行时异常传递 声明时异常传递 异常处理器中的异常 重新抛出异常 异常处理准则 性格决定命运, 专注成就人生 源智天下 Oracle Database 10g: Administration Workshop II 1-* 1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司
您可能关注的文档
最近下载
- 2025年文山州砚山县中医医院第十一期招聘(18人)笔试备考题库及答案解析.docx VIP
- C186015【基础】2025年海南医学院105300公共卫生《353卫生综合之医学统计学》考研基础.pdf VIP
- 2025年湖南有色金属职业技术学院单招职业技能测试题库及一套答案.docx
- 中国乙型肝炎病毒母婴传播防治指南(2024年版)解读.pptx
- 有机磷农药中毒.ppt VIP
- 骨科手术护理培训.pptx VIP
- 2025退役分类考试题及答案.docx VIP
- 护线宣传方案课件.pptx VIP
- 2025年文山州砚山县中医医院第十一期招聘(18人)笔试备考试题及答案解析.docx VIP
- SL 557-2012水利基本建设项目竣工决算审计规程.pdf
文档评论(0)