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 是,當(dāng)沒有已經(jīng)定義好了的EXCEPTION NAME可用時,我們就用OTHERS來處理未被捕捉的所有的EXCEPTION,PL/SQL設(shè)計者建議大家盡量使用已知的EXCEPTION NAME來捕捉,不到最后,盡量不用這個選項,雖然不知道為什么,但估計是跟性能有關(guān),而且編譯出來的代碼應(yīng)該會很長。-
我們知道ora-60錯誤是代表死鎖的意思,www.linuxidc.com那我們就可以為這個錯誤號起一個EXCEPTION NAME,比如DEADLOCK_DETECTED,語法如下: DECLARE 好我們就可以像下面一樣來捕捉處理這個死鎖的EXCEPTION了。 EXCEPTION 這樣,我們就避免了用when others then來捕捉處理這個異常了。 這個編譯指令幾乎可以用在所有的程序的聲明項中,但要注意作用范圍,另外要注意的是記住只為一個錯誤號起一個EXCEPTION NAME。 下面附上一段通過SQLERRM函數(shù)找出Oracle預(yù)定義的錯誤號碼及相應(yīng)的錯誤信息。這在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 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |