1. ORACLE预定义常见的异常错误
错误号
异常错误信息名称
说明
ORA-0001
Dup_val_on_index
违反了唯一性限制
ORA-0051
Timeout-on-resource
在等待资源时发生超时
ORA-0061
Transaction-backed-out
由于发生死锁事务被撤消
ORA-1001
Invalid-CURSOR
试图使用一个无效的游标
ORA-1012
Not-logged-on
没有连接到ORACLE
ORA-1017
Login-denied
无效的用户名/口令
ORA-1403
No_data_found
SELECTINTO没有找到数据
ORA-1422
Too_many_rows
SELECTINTO返回多行
ORA-1476
Zero-divide
试图被零除
ORA-1722
Invalid-NUMBER
转换一个数字失败
ORA-6500
Storage-error
内存不够引发的内部错误
ORA-6501
Program-error
内部错误
ORA-6502
Value-error
转换或截断错误
ORA-6504
Rowtype-mismatch
宿主游标变量与PL/SQL变量有不兼容行类型
ORA-6511
CURSOR-already-OPEN
试图打开一个已处于打开状态的游标
ORA-6530
Access-INTO-null
试图为null对象的属性赋值
ORA-6531
Collection-is-null
试图将Exists以外的集合(collection)
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
应用于一个nullpl/sql
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
上或varray上
ORA-6532
Subscript-outside-limit
对嵌套或varray索引得引用超出声明范围以外
ORA-6533
Subscript-beyond-count
对嵌套或varray索引得引用大于集合中元素的个数.
2. ORACLE用户定义的异常处理
调用DBMS_STANDARD(ORACLE提供的包)包所定义RAISE_APPLICATION_ERROR过程,可以重新定义异常错误消息
RAISE_APPLICATION_ERROR的语法如下:
RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);
这里的error_number 是从 –20,000 到 –20,999 之间的参数,
error_message 是相应的提示信息(< 2048 字节),
keep_errors 为可选,如果keep_errors =TRUE ,则新错误将被添加到已经引发的错误列表中。如果 keep_errors=FALSE(缺省),则新错误将替换当前的错误列表。
3. 捕获ORACLE用户定义的异常处理
首先,在存储过程里声明以下参数:
empno_remaining EXCEPTION;
PRAGMA EXCEPTION_INIT(empno_remaining, error_number);
error_number是调用的接口所自定义的异常参数
然后通过以下的格式捕获异常
EXCEPTION
WHEN empno_remaining THEN
--详细处理代码—
4.ORCALE注意点
ORACLE提供的所定义DBMS_UTILITY.format_error_backtrace过程,其主要作用是捕获异常发生所在行,DBMS_UTILITY.format_error_backtrace 跟错误信息相拼是放在RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors])中的error_message,在PICC系统中最好把DBMS_UTILITY.format_error_backtrace放在最后,否则放在的其后面是信息在PICC错误页面是无法显示的。
5.系统中ORCALE异常错误处理
PICC中自定义异常已通过P_ERROR(I_TYPE_ID number, I_MSG varchar2)接口进行了封装
其主要的代码
create or replace procedure P_ERROR(I_TYPE_ID number, I_MSG varchar2) is
begin
raise_application_error(-20100, I_TYPE_ID || ',' || I_MSG);
end P_ERROR;
所以I_TYPE_ID 并不是上述的error_number,I_TYPE_ID是t_string_resource中的信息主键,
对于P_ERROR封装的错误信息 在ExceptionFactory.java中的parse()方法中进行了详细的解码。
P_ERROR 封装的异常错误码都是-20100 不具备特殊性,所以在需求中遇到特殊的ORCALE异常错误处理,需要我们通过原始的raise_application_error来自定义异常,当要注意在ExceptionFactory.java是否需要进行特殊的处理。