PL/SQL 异常高级概念
2013-04-19 00:44
281 查看
做好了准备想要接受难一点的概念,结果发现,其实这一章很水。
1. raise_application_error
raise_application_error 是Oracle提供的一种特殊的内置过程,允许程序员为特定应用程序创建有意义的错误消息,也即自定义。语法如下:
raise_application_error(error_number,error_message);
or
raise_application_error(error_number,error_message,keep_errors);
error_number是与特定错误消息相关联的错误编号,这个编号的范围在-20999到-20000之间(避免与内置编号冲突)。
keep_errors是boolean类型,决定是否加入错误栈(true)或者替换错误栈(false)。默认是false。
示例如下:
注意在最后已经不用去捕获了,因为已经在第6行的时候捕捉到了异常。在PL/SQL中会弹出报错的对话框。
报错信息由用户自定义。
2.exception_init 编译指令
在有些情况下,程序需要处理具有特殊编号的Oracle错误,而不是根据名称来引用它。或者说,用户希望自定义错误的名称。这时,可以使用名为编译指令的结构。
使用exception_init编译指令,可以把某个Oracle错误编号与用户的自定义名称建立关联。
语法如下:
declare
exception_name exception;
pragma exception_init(exception_name, error_code);
先看看不用编译指令的情况下的捕捉异常:
value_error是内置的错误名称,这样做也没有什么问题。如果用编译指令的话,如下:
编译了一个异常,-6502是错误编号,而value_error是内置与之关联的错误名称。如此一来,就可以将value_error改为ex了,也可以在异常处理中使用ex来捕捉它了。
不过这样好像也没什么大作用啊……
1. raise_application_error
raise_application_error 是Oracle提供的一种特殊的内置过程,允许程序员为特定应用程序创建有意义的错误消息,也即自定义。语法如下:
raise_application_error(error_number,error_message);
or
raise_application_error(error_number,error_message,keep_errors);
error_number是与特定错误消息相关联的错误编号,这个编号的范围在-20999到-20000之间(避免与内置编号冲突)。
keep_errors是boolean类型,决定是否加入错误栈(true)或者替换错误栈(false)。默认是false。
示例如下:
declare a number; begin a := -1; if a < 0 then raise_application_error(-20000, 'its negative'); else dbms_output.put_line('its NOT negative'); end if; end;
注意在最后已经不用去捕获了,因为已经在第6行的时候捕捉到了异常。在PL/SQL中会弹出报错的对话框。
报错信息由用户自定义。
2.exception_init 编译指令
在有些情况下,程序需要处理具有特殊编号的Oracle错误,而不是根据名称来引用它。或者说,用户希望自定义错误的名称。这时,可以使用名为编译指令的结构。
使用exception_init编译指令,可以把某个Oracle错误编号与用户的自定义名称建立关联。
语法如下:
declare
exception_name exception;
pragma exception_init(exception_name, error_code);
先看看不用编译指令的情况下的捕捉异常:
declare a number; begin a := 'a'; dbms_output.put_line('can u see me?'); exception when value_error then dbms_output.put_line('exception here'); end;
value_error是内置的错误名称,这样做也没有什么问题。如果用编译指令的话,如下:
declare a number; ex exception; pragma exception_init(ex, -6502); begin a := 'a'; dbms_output.put_line('can u see me?'); exception when ex then dbms_output.put_line('exception here'); end;
编译了一个异常,-6502是错误编号,而value_error是内置与之关联的错误名称。如此一来,就可以将value_error改为ex了,也可以在异常处理中使用ex来捕捉它了。
不过这样好像也没什么大作用啊……
相关文章推荐
- PL/SQL专家指南1——高级概念
- Oracle PL/SQL中异常高级特性示例解析
- PL/SQL之高级篇
- PL/SQL Oracle 用sql query查询,中文字段内容显示异常的处理
- Oracle备忘录(十一)--游标,异常,PL/SQL
- pl/sql中的异常处理
- PL/SQL高级应用的学习1
- 106---oracle的PL/SQL,异常处理, 游标(CURSOR), 子程序,存储过程
- [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)
- [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)
- 异常、错误-oracle 11g PL/SQL Programming学习三-by小雨
- ORACLE PL/SQL编程之五:异常错误处理
- 【Oracle】PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR
- 源码-PL/SQL从入门到精通-第十二章-异常处理机制-Part 1
- Oracle10G学习笔记之五Pl/sql高级
- [PL/SQL] 如何规避异常ORA-01403
- PL/SQL的定义(六)异常处理
- PL/SQL 异常
- ORACLE学习之PL/SQL中异常
- PL/SQL中的几种异常处理方法