PLSQL中异常的定义抛出处理Word下载.docx

上传人:b****2 文档编号:14877629 上传时间:2022-10-25 格式:DOCX 页数:9 大小:773.27KB
下载 相关 举报
PLSQL中异常的定义抛出处理Word下载.docx_第1页
第1页 / 共9页
PLSQL中异常的定义抛出处理Word下载.docx_第2页
第2页 / 共9页
PLSQL中异常的定义抛出处理Word下载.docx_第3页
第3页 / 共9页
PLSQL中异常的定义抛出处理Word下载.docx_第4页
第4页 / 共9页
PLSQL中异常的定义抛出处理Word下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

PLSQL中异常的定义抛出处理Word下载.docx

《PLSQL中异常的定义抛出处理Word下载.docx》由会员分享,可在线阅读,更多相关《PLSQL中异常的定义抛出处理Word下载.docx(9页珍藏版)》请在冰豆网上搜索。

PLSQL中异常的定义抛出处理Word下载.docx

∙用户自定异常处理

∙系统自带异常处理

∙未知异常处理

∙在声明阶段中异常

∙异常的传播异常的SQLCode和SQLErrm

∙异常在声明块中传播

∙异常在执行块中传播

∙OracleERPFnd_file工具 

∙fnd_file.output

∙fnd_file.log

∙附件

∙附件-Oracle自带异常列表

∙附件-OracleStandardError列表

二、概述

1.异常的分类

1.1系统自带异常

1.1.1概念 

 

执行期间返回到PL/SQL块的ORACLE错误或由PL/SQL代码的某操作引起的错误,如除数为零或内存溢出的情况

 

每当PL/SQL违背了ORACLE原则或超越了系统依赖的原则就会隐式的产生内部异常。

因为每个ORACLE错误都有一个号码并且在PL/SQL中异常通过名字处理,ORACLE提供了预定义的内部异常

1.1.2例子:

未定义异常,系统遇到预定义异常时,自动抛出,如no_data_found 

1.2用户定义异常 

1.2.1概念:

由开发者显示定义,在PL/SQL块中传递信息以控制对于应用的错误处理

如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMAEXCEPTION_INIT。

PRAGMA由编译器控制,或者是对于编译器的注释。

PRAGMA在编译时处理,而不是在运行时处理。

EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。

自定义一个异常bxj_exception,并抛出 

2.异常的抛出

2.1通过PLSQL引擎自动处理

2.1.1概念:

当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出

2.1.2例子:

系统自导抛出异常,并处理

2.2通过Raise 

2.2.1概念:

异常也可以通过RAISE语句抛出RAISEexception_name;

显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。

例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器

2.2.2例子:

通过raise语句将异常抛出 

2.3通过Raise_Application_Error 

2.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)进错误堆(ERRORSTACK)还是覆盖(overwrite)错误堆(FALSE)

2.3.2例子:

通过raise_application_error语句将异常抛出

3.异常的处理

3.1用户自定异常处理、 

系统自带异常处理、 

未知异常处理

以下一个简单的例子说明了程式三种异常的捕捉和处理

3.2在声明阶段中异常 

以下一个简单的例子说明了在声明阶段的异常,一般来说package执行过程中很少遇到这种错误,因为在编译过程中就会审计

除非所引用的table的结构发生变化,导致引用失败

4.异常的传播

4.1如果异常发生在执行块

当一个异常错误在执行部分引发时,有下列情况:

如果当前块对该异常错误设置了处理,则执行它并成功完成该块的执行,然后控制转给包含块。

如果没有对当前块异常错误设置定义处理器,则通过在包含块中引发它来传播异常错误。

然后对该包含块执行步骤

4.2如果异常发生在声明块 

如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误就能影响到其它的块

5.异常的SQLCode和SQLErrm

5.1概念

由于ORACLE的错信息最大长度是512字节,为了得到完整的错误提示信息,我们可用SQLERRM和SUBSTR函数一起得到错误提示信息,方便进行错误,特别是如果WHENOTHERS异常处理器时更为方便。

∙SQLCODE 

返回遇到的Oracle 

错误号

∙SQLERRM 

返回遇到的Oracle错误信息

5.2例子

产生SQLCode和SQLErrm

6.Oraclefnd_file.output和fnd_file.log 

6.1fnd_file.output

用于Request输出报表产生layout,一般不能在这里写log语句

6.2fnd_file.log

用于存放程式log记录,用于写log,程式异常处理记录都可以通过这个api进行记录

7.附件 

7.1附件-Oracle自带异常列表

∙ACCESS_INTO_NULL 

未定义对象 

∙CASE_NOT_FOUND 

CASE 

中若未包含相应的 

WHEN 

,并且没有设置 

ELSE 

时 

∙COLLECTION_IS_NULL 

集合元素未初始化 

∙CURSER_ALREADY_OPEN 

游标已经打开 

∙DUP_VAL_ON_INDEX 

唯一索引对应的列上有重复的值 

∙INVALID_CURSOR 

在不合法的游标上进行操作 

∙INVALID_NUMBER 

内嵌的SQL语句不能将字符转换为数字 

∙NO_DATA_FOUND 

使用 

select 

into 

未返回行,或应用索引表未初始化的元素时 

∙TOO_MANY_ROWS 

执行 

时,结果集超过一行 

∙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_MISMATCH 

宿主游标变量与PL/SQL游标变量的返回类型不兼容 

∙SELF_IS_NULL 

使用对象类型时,在 

null 

对象上调用对象方法 

∙STORAGE_ERROR 

运行PL/SQL时,超出内存空间 

∙SYS_INVALID_ID 

无效的ROWID字符串 

∙TIMEOUT_ON_RESOURCE 

Oracle在等待资源时超时 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1