Oracle pragma 舉例: exception_init() |
發(fā)布時(shí)間: 2012/9/19 17:07:33 |
PRAGMA EXCEPTION_INIT(DEADLOCK_DETECTED, -60); EXCEPTION_INIT編譯指 令,從字面意思上我們能了解一點(diǎn),即EXCEPTION的初始化。 語法也簡(jiǎn)單,PRAGMA EXCEPTION (exception_name, error_number); 大家都有經(jīng)驗(yàn),在處理EXCEPTION 是,當(dāng)沒有已經(jīng)定義好了的EXCEPTION NAME可用時(shí),我們就用OTHERS來處理未被捕捉的所有的EXCEPTION,PL/SQL設(shè)計(jì)者建議大家盡量使用已知的EXCEPTION NAME來捕捉,不到最后,盡量不用這個(gè)選項(xiàng),雖然不知道為什么,但估計(jì)是跟性能有關(guān),而且編譯出來的代碼應(yīng)該會(huì)很長(zhǎng)。-
我們知道ora-60錯(cuò)誤是代表死鎖的意思,www.linuxidc.com那我們就可以為這個(gè)錯(cuò)誤號(hào)起一個(gè)EXCEPTION NAME,比如DEADLOCK_DETECTED,語法如下: DECLARE 好我們就可以像下面一樣來捕捉處理這個(gè)死鎖的EXCEPTION了。 EXCEPTION 這樣,我們就避免了用when others then來捕捉處理這個(gè)異常了。 這個(gè)編譯指令幾乎可以用在所有的程序的聲明項(xiàng)中,但要注意作用范圍,另外要注意的是記住只為一個(gè)錯(cuò)誤號(hào)起一個(gè)EXCEPTION NAME。 下面附上一段通過SQLERRM函數(shù)找出Oracle預(yù)定義的錯(cuò)誤號(hào)碼及相應(yīng)的錯(cuò)誤信息。這在10g版本通過,在之前的版本可能會(huì)報(bào)buffer overflow錯(cuò)誤,這是由于set serveroutput on默認(rèn)為2000字節(jié),但在10g中默認(rèn)是unlimited了。 SET SERVEROUTPUT ON SPOOL OFF ---------------www.linuxidc.com再加一個(gè)例子--------------- 下面看一個(gè)例子 create or replace procedure SP_Del_Test 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |