已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、摘要在PLSQL程序开发过程中,很重要的部分就是对程序异常的监控和处理,包括如何触发异常,何时进行处理,如何进行处理,是否将程式中的所有异常集中在一起,通过公共异常处理的procedure或function,如果没有完善的程式处理机制,很难说该程式是一只健壮的程式,当程式遇到很多类型或者量很多资料时,系统若没有异常处理必然会导致程式的出错当预判到了某些异常,需要对预判到的异常进行合适相应的处理,是否抛出异常还是忽略还是其他当然程式没有预判到或者是一些未知的异常遇到,所以异常处理模块也要考虑这些未预见到的程式PLSQL异常的资料网络流传很多,都有些类似,归纳的很详细了,资料被转来转去,也不太清楚原文的出处,向未知的大神致敬本文整理下网络上的资料,并重新排版了下 异常的分类 系统自带异常 用户自定异常 异常的抛出 PLSQL引擎自动处理 Raise Raise_Application_Error 异常的处理 用户自定异常处理 系统自带异常处理 未知异常处理 在声明阶段中异常 异常的传播异常的SQLCode 和 SQL Errm 异常在声明块中传播 异常在执行块中传播 Oracle ERP Fnd_file工具 fnd_file.output fnd_file.log 附件 附件 - Oracle自带异常列表 附件 - Oracle Standard Error 列表二、概述1. 异常的分类1.1 系统自带异常1.1.1 概念:执行期间返回到PL/SQL块的ORACLE错误或由PL/SQL代码的某操作引起的错误,如除数为零或内存溢出的情况 每当PL/SQL违背了ORACLE原则或超越了系统依赖的原则就会隐式的产生内部异常。 因为每个ORACLE错误都有一个号码并且在PL/SQL中异常通过名字处理,ORACLE提供了预定义的内部异常1.1.2 例子: 未定义异常,系统遇到预定义异常时,自动抛出,如no_data_found1.2 用户定义异常1.2.1 概念:由开发者显示定义,在PL/SQL块中传递信息以控制对于应用的错误处理 如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMA EXCEPTION_INIT 。 PRAGMA由编译器控制,或者是对于编译器的注释。PRAGMA在编译时处理,而不是在运行时处理。 EXCEPTION_INIT告诉编译器将异常名 与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。1.1.2 例子: 自定义一个异常bxj_exception,并抛出2. 异常的抛出2.1 通过PLSQL引擎自动处理2.1.1 概念: 当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出2.1.2 例子: 系统自导抛出异常,并处理2.2 通过Raise2.2.1 概念:异常也可以通过RAISE语句抛出RAISE exception_name; 显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器2.2.2 例子: 通过raise语句将异常抛出2.3 通过Raise_Application_Error2.3.1 概念:RAISE_APPLICATION_ERROR 内建函数用于抛出一个异常并给异常赋予一个错误号以及错误信息。 自定义异常的缺省错误号是+1,缺省信息是 User_Defined_Exception。 RAISE_APPLICATION_ERROR函数能够在pl/sql程序块的执行部分和异常部分调 用,显式抛出带特殊错误号的命名异常。 Raise_application_error(error_number,message,true,false) 错误号的范围是-20,000到-20,999。错误信息是文本字符串,最多为2048字节。TRUE和FALSE表示是添加(TRUE)进错误堆(ERROR STACK)还是覆盖(overwrite)错误堆(FALSE)2.3.2 例子: 通过raise_application_error语句将异常抛出3. 异常的处理3.1 用户自定异常处理 、系统自带异常处理、未知异常处理以下一个简单的例子说明了程式三种异常的捕捉和处理3.2 在声明阶段中异常以下一个简单的例子说明了在声明阶段的异常,一般来说package执行过程中很少遇到这种错误,因为在编译过程中就会审计除非所引用的table的结构发生变化,导致引用失败4. 异常的传播4.1 如果异常发生在执行块当一个异常错误在执行部分引发时,有下列情况:如果当前块对该异常错误设置了处理,则执行它并成功完成该块的执行,然后控制转给包含块。如果没有对当前块异常错误设置定义处理器,则通过在包含块中引发它来传播异常错误。然后对该包含块执行步骤4.2 如果异常发生在声明块如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误就能影响到其它的块5. 异常的SQLCode 和 SQL Errm5.1 概念由于ORACLE 的错信息最大长度是512字节,为了得到完整的错误提示信息,我们可用 SQLERRM和 SUBSTR 函数一起得到错误提示信息,方便进行错误,特别是如果WHEN OTHERS异常处理器时更为方便。 SQLCODE 返回遇到的Oracle错误号 SQLERRM 返回遇到的Oracle错误信息5.2 例子产生SQLCode和SQLErrm6. Oracle fnd_file.output 和 fnd_file.log6.1 fnd_file.output用于Request输出报表产生layout,一般不能在这里写log语句6.2 fnd_file.log用于存放程式log记录,用于写log,程式异常处理记录都可以通过这个api进行记录7. 附件7.1 附件 - Oracle自带异常列表 ACCESS_INTO_NULL 未定义对象 CASE_NOT_FOUNDCASE中若未包含相应的WHEN,并且没有设置ELSE时 COLLECTION_IS_NULL 集合元素未初始化 CURSER_ALREADY_OPEN 游标已经打开 DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值 INVALID_CURSOR 在不合法的游标上进行操作 INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字 NO_DATA_FOUND 使用selectinto未返回行,或应用索引表未初始化的元素时 TOO_MANY_ROWS 执行selectinto时,结果集超过一行 ZERO_DIVIDE 除数为 0 SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或 VARRAY 的最大值 SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY 时,将下标指定为负数 VALUE_ERROR 赋值时,变量长度不足以容纳实际数据 LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码 NOT_LOGGED_ON PL/SQL 应用程序在没有连接 oralce 数据库的情况下访问数据 PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典 pl./SQL 系统包 ROWTYPE_MISMATC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽马鞍山市食品药品检验和药品不良反应监测中心编外聘用工作人员招聘3人备考题库附答案
- 2025山东威海乳山鑫蜜客人力资源有限公司招聘劳务派遣人员34模拟试卷附答案
- Unit8Lesson2课件冀教版英语七年级上册
- 2025广东广州市海珠区审计局选调公务员1人备考题库附答案
- 2025中煤集团新疆能源有限公司面向社会及高校招聘66人备考题库附答案
- 2025年安徽新华保险国际金融中心招聘30人模拟试卷附答案
- 二年级班会安全主题课件
- 2025年中国核工业二三建设有限公司招聘110人甘肃有岗笔试参考题库附答案
- 2025年福建省五建建设集团有限公司招聘项目制工作人员30人公笔试备考试题附答案
- 2025山东发展绿色清洁能源有限公司招聘5人备考题库附答案
- 电气工程师生涯人物访谈报告
- 学历(学位)更改呈报审批表
- 智能鞋行业研究分析报告
- 美国常青藤大学介绍
- 高中英语词汇表(3500词)
- 讴霭咨询-零售行业创新的洞察:策展式零售、叙事零售
- GB/T 13871.5-2015密封元件为弹性体材料的旋转轴唇形密封圈第5部分:外观缺陷的识别
- GB/T 11032-2020交流无间隙金属氧化物避雷器
- A4版2022山东物理高考答题卡word版
- 六年级上册心理健康教育课件-不盲目攀比 全国通用(共18张PPT)
- T-CAMET 04017.6-2019 城市轨道交通 全自动运行系统规范 第6部分:初期运营基本条件
评论
0/150
提交评论