亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

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)。-
 


這個(gè)編譯指令的引入也為這帶來了解決方案。比如,我們要捕捉死鎖這個(gè)EXCEPTION怎么辦? 系統(tǒng)沒有預(yù)定義好的EXCEPTION NAME可用。這時(shí)我們就可以用這個(gè)編譯指令了。

我們知道ora-60錯(cuò)誤是代表死鎖的意思,www.linuxidc.com那我們就可以為這個(gè)錯(cuò)誤號(hào)起一個(gè)EXCEPTION NAME,比如DEADLOCK_DETECTED,語法如下:

DECLARE
DEADLOCK_DETECTED EXCEPTION;
PRAGMA EXCEPTION_INIT(DEADLOCK_DETECTED, -60);

好我們就可以像下面一樣來捕捉處理這個(gè)死鎖的EXCEPTION了。

EXCEPTION
WHEN DEADLOCK_DETECTED THEN
......

這樣,我們就避免了用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 ERRORMSG.LOG
DECLARE
VMSG VARCHAR2(500);
BEGIN
FOR I IN 0..20000 LOOP
VMSG := SQLERRM(-I);
IF INSTR(VMSG,'not found') = 0 THEN
DBMS_OUTPUT.PUT_LINE(VMSG);
END IF;
END LOOP;
END;
/

SPOOL OFF

---------------www.linuxidc.com再加一個(gè)例子---------------

下面看一個(gè)例子

create or replace procedure SP_Del_Test
(P_ItemAdmin in mfitem.itemadmin%type, --ItemAdmin
 P_ItemCd    in mfitem.itemcd%type, --ItemCode
 P_Return    out number --輸出參數(shù)
 ) is
  exp exception;
  PRAGMA Exception_Init(exp, -2292);
begin
  delete from mfitem t
   where t.itemcd = P_ItemCd
     and t.itemadmin = P_ItemAdmin;  --這一句會(huì)引發(fā)-2292異常,有級(jí)連刪除異常
EXCEPTION
  WHEN EXP THEN
    P_Return := 9;
    ROLLBACK;
  WHEN OTHERS THEN
    ROLLBACK;
end SP_Del_Test;  


本文出自:億恩科技【1tcdy.com】

服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線