




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用文档一、摘要在 PLSQL 程序开发过程中,很重要的部分就是对程序异常的监控和处理,包括如何触发异常, 何时进行处理, 如何进行处理, 是否将程式中的所有异常集中在一起,通过公共异常处理的 procedure或 function ,如果没有完善的程式处理机制,很难说该程式是一只健壮的程式,当程式遇到很多类型或者量很多资料时,系统若没有异常处理必然会导致程式的出错当预判到了某些异常, 需要对预判到的异常进行合适相应的处理, 是否抛出异常还是忽略还是其他当然程式没有预判到或者是一些未知的异常遇到, 所以异常处理模块也要考虑这些未预见到的程式PLSQL 异常的资料网络流传很多,都有些类似,归纳的
2、很详细了,资料被转来转去,也不太清楚原文的出处,向未知的大神致敬本文整理下网络上的资料,并重新排版了下? 异常的分类? 系统自带异常? 用户自定异常? 异常的抛出? PLSQL 引擎自动处理? Raise? Raise_Application_Error? 异常的处理? 用户自定异常处理? 系统自带异常处理? 未知异常处理? 在声明阶段中异常? 异常的传播异常的 SQLCode 和 SQL Errm实用文档? 异常在声明块中传播? 异常在执行块中传播? Oracle ERP Fnd_file工具? fnd_file.output? fnd_file.log? 附件? 附件 - Oracle 自
3、带异常列表? 附件 - Oracle Standard Error 列表二、概述1. 异常的分类1.1 系统自带异常概念 :执行期间返回到 PL/SQL 块的 ORACLE 错误或由 PL/SQL 代码的某操作引起的错误,如除数为零或内存溢出的情况每当 PL/SQL 违背了 ORACLE 原则或超越了系统依赖的原则就会隐式的产生内部异常。因为每个 ORACLE 错误都有一个号码并且在 PL/SQL 中异常通过名字处理, ORACLE 提供了预定义的内部异常例子:未定义异常,系统遇到预定义异常时, 自动抛出,如 no_data_found实用文档1.2 用户定义异常概念: 由开发者显示定义,在
4、PL/SQL 块中传递信息以控制对于应用的错误处理如果要处理未命名的内部异常,必须使用OTHERS 异常处理器或 PRAGMA EXCEPTION_INIT 。PRAGMA 由编译器控制,或者是对于编译器的注释。 PRAGMA 在编译时处理,而不是在运行时处理。EXCEPTION_INIT 告诉编译器将异常名 与 ORACLE 错误码结合起来,这样可以通过名字引用任意的内部异常, 并且可以通过名字为异常编写一适当的异常处理器。例子: 自定义一个异常bxj_exception,并抛出实用文档2. 异常的抛出2.1 通过 PLSQL 引擎自动处理概念: 当数据库或 PL/SQL 在运行时发生错误时
5、,一个异常被 PL/SQL 运行时引擎自动抛出例子: 系统自导抛出异常,并处理实用文档2.2 通过 Raise概念: 异常也可以通过RAISE 语句抛出 RAISE exception_name;显式抛出异常是程序员处理声明的异常的习惯用法, 但 RAISE 不限于声明了的异常,它可以抛出任何任何异常。例如,你希望用 TIMEOUT_ON_RESOURCE 错误检测新的运行时异常处理器例子: 通过 raise 语句将异常抛出实用文档2.3 通过 Raise_Application_Error概念: RAISE_APPLICATION_ERROR 内建函数用于抛出一个异常并给异常赋予一个错误号以
6、及错误信息。自定义异常的缺省错误号是 +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)例子:
7、 通过 raise_application_error语句将异常抛出实用文档3. 异常的处理3.1 用户自定异常处理、 系统自带异常处理、未知异常处理以下一个简单的例子说明了程式三种异常的捕捉和处理3.2 在声明阶段中异常以下一个简单的例子说明了在声明阶段的异常,一般来说 package执行过程中很少遇到这种错误,因为在编译过程中就会审计实用文档除非所引用的 table 的结构发生变化,导致引用失败4. 异常的传播4.1 如果异常发生在执行块当一个异常错误在执行部分引发时,有下列情况:如果当前块对该异常错误设置了处理, 则执行它并成功完成该块的执行, 然后控制转给包含块。如果没有对当前块异常错
8、误设置定义处理器, 则通过在包含块中引发它来传播异常错误。然后对该包含块执行步骤4.2 如果异常发生在声明块如果在声明部分引起异常情况, 即在声明部分出现错误, 那么该错误就能影响到其它的块5. 异常的 SQLCode 和 SQL Errm5.1 概念实用文档由于 ORACLE 的错信息最大长度是 512 字节,为了得到完整的错误提示信息,我们可用 SQLERRM 和 SUBSTR 函数一起得到错误提示信息,方便进行错误,特别是如果 WHEN OTHERS 异常处理器时更为方便。? SQLCODE 返回遇到的 Oracle 错误号? SQLERRM 返回遇到的 Oracle 错误信息5.2 例
9、子产生 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
10、集合元素未初始化?CURSER_ALREADY_OPEN游标已经打开?DUP_VAL_ON_INDEX唯一索引对应的列上有重复的值?INVALID_CURSOR在不合法的游标上进行操作?INVALID_NUMBER内嵌的 SQL 语句不能将字符转换为数字? NO_DATA_FOUND使用 select into 未返回行,或应用索引表未初始化的元素时? TOO_MANY_ROWS执行 select into 时,结果集超过一行?ZERO_DIVIDE除数为 0实用文档? SUBSCRIPT_BEYOND_COUNT元素下标超过嵌套表或VARRAY 的最大值?SUBSCRIPT_OUTSIDE_LIMIT使用嵌套表或 VARRAY时,将下标指定为负数?VALUE_ERROR赋值时,变量长度不足以容纳实际数据?LOGIN_DENIEDPL/SQL 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码?NOT_LOGGED_ONPL/SQL 应用程序在没有连接 oralce 数据库的情况下访问数据?PROGRAM_ERRORPL/SQL 内部问题,可能需要重装数据字典 pl./SQL 系统包?ROWTYPE_M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学(简便运算)计算题专项练习与答案
- 2024年电气工程师资格证书备考计划试题及答案
- 北美的水资源管理与供水设备趋势
- 矿山爆破服务合同协议
- 租房自己做保洁合同协议
- 砂石类采购合同协议
- 研发中心投资协议书范本
- 石料厂包工合同协议
- 相机租赁续租合同协议
- 种兔养殖出售合同协议
- 基于多源异构数据的地质知识图谱构建与应用
- 2024年战略规划咨询服务合同
- 2024年领导干部任前廉政知识考试测试题库及答案
- 《公共资源交易主体信用评价实施指南》编制说明
- 2024年度山东省国家电网招聘之管理类测试卷(含答案)
- 煤矿防突专项设计(样本)
- 绍兴银行社会招聘真题
- 《储水式电热水器的安全使用年限》
- DB1303T375-2024起重机械使用管理制度编制指南
- 路灯安装工程项目实施重点、难点和解决方案
- 山西省云时代技术有限公司笔试题库
评论
0/150
提交评论