Oracle pragma 舉例: exception_init() |
發(fā)布時間: 2012/9/19 17:07:33 |
PRAGMA EXCEPTION_INIT(DEADLOCK_DETECTED, -60); EXCEPTION_INIT編譯指 令,從字面意思上我們能了解一點,即EXCEPTION的初始化。 語法也簡單,PRAGMA EXCEPTION (exception_name, error_number); 大家都有經(jīng)驗,在處理EXCEPTION 是,當沒有已經(jīng)定義好了的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函數(shù)找出Oracle預定義的錯誤號碼及相應的錯誤信息。這在10g版本通過,在之前的版本可能會報buffer overflow錯誤,這是由于set serveroutput on默認為2000字節(jié),但在10g中默認是unlimited了。 SET SERVEROUTPUT ON SPOOL OFF ---------------www.linuxidc.com再加一個例子--------------- 下面看一個例子 create or replace procedure SP_Del_Test 本文出自:億恩科技【mszdt.com】 |