Oracle pragma 举例: exception_init() |
发布时间: 2012/9/19 17:07:33 |
PRAGMA EXCEPTION_INIT(DEADLOCK_DETECTED, -60); EXCEPTION_INIT编译指 令,从字面意思上我们能了解一点,即EXCEPTION的初始化。 语法也简单,PRAGMA EXCEPTION (exception_name, error_number); 大家都有经验,在处理EXCEPTION 是,当没有已经定义好了的EXCEPTION NAME可用时,我们就用OTHERS来处理未被捕捉的所有的EXCEPTION,PL/SQL设计者建议大家尽量使用已知的EXCEPTION NAME来捕捉,不到最后,尽量不用这个选项,虽然不知道为什么,但估计是跟性能有关,而且编译出来的代码应该会很长。-
我们知道ora-60错误是代表死锁的意思,www.linuxidc.com那我们就可以为这个错误号起一个EXCEPTION NAME,比如DEADLOCK_DETECTED,语法如下: DECLARE 好我们就可以像下面一样来捕捉处理这个死锁的EXCEPTION了。 EXCEPTION 这样,我们就避免了用when others then来捕捉处理这个异常了。 这个编译指令几乎可以用在所有的程序的声明项中,但要注意作用范围,另外要注意的是记住只为一个错误号起一个EXCEPTION NAME。 下面附上一段通过SQLERRM函数找出Oracle预定义的错误号码及相应的错误信息。这在10g版本通过,在之前的版本可能会报buffer overflow错误,这是由于set serveroutput on默认为2000字节,但在10g中默认是unlimited了。 SET SERVEROUTPUT ON SPOOL OFF ---------------www.linuxidc.com再加一个例子--------------- 下面看一个例子 create or replace procedure SP_Del_Test 本文出自:亿恩科技【www.enkj.com】 |