顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業(yè)只做數(shù)據(jù)庫實(shí)訓(xùn)和認(rèn)證的品牌機(jī)構(gòu)

微信公眾號(hào)新浪微博
免費(fèi)咨詢電話:400-0909-964
當(dāng)前位置: 網(wǎng)站首頁 > DBA實(shí)戰(zhàn) > DBA課程 > Oracle教程:PL/SQL引發(fā)應(yīng)用程序異常處理

Oracle教程:PL/SQL引發(fā)應(yīng)用程序異常處理

文章來源: 更新時(shí)間:2016/7/20 15:47:45

在線老師點(diǎn)擊咨詢:

最新學(xué)訊:近期OCP認(rèn)證正在報(bào)名中,因考試人員較多請(qǐng)盡快報(bào)名獲取最近考試時(shí)間,報(bào)名費(fèi)用請(qǐng)聯(lián)系在線老師,甲骨文官方認(rèn)證,報(bào)名從速!

我要咨詢

Oracle教程:PL/SQL引發(fā)應(yīng)用程序異常處理,在Oracle開發(fā)中,遇到的系統(tǒng)異常都有對(duì)應(yīng)的異常碼,在應(yīng)用系統(tǒng)開發(fā)中,用戶自定義的異常也可以指定一個(gè)異常碼和異常信息,Oracle系統(tǒng)為用戶預(yù)留了自定義異常碼,其范圍介于-20000到-20999之間的負(fù)整數(shù)。引發(fā)應(yīng)用程序異常的語法是:

RAISE_APPLICATION_ERROR(異常碼,異常信息)

案例12:引發(fā)系統(tǒng)異常

代碼演示:引發(fā)應(yīng)用系統(tǒng)異常

SQL> DECLARE

  2      sal emp.sal%TYPE;

  3      myexp EXCEPTION;

  4  BEGIN

  5      SELECT sal INTO sal FROM emp WHERE ename='JAMES';

  6      IF sal<5000 THEN

  7         RAISE myexp;

  8      END IF;

  9  EXCEPTION

 10      WHEN NO_DATA_FOUND THEN

 11           dbms_output.put_line('NO RECORDSET FIND!');

 12      WHEN MYEXP THEN

 13           RAISE_APPLICATION_ERROR(-20001,'SAL IS TO LESS!'); 

 14  END;

 15  /

ORA-20001: SAL IS TO LESS! 

ORA-06512: line 14

代碼解析:

① 引發(fā)應(yīng)用系統(tǒng)異常,指明異常碼和異常信息。

② 在控制臺(tái)上顯示異常碼和異常信息。

如果要處理未命名的內(nèi)部異常,必須使用OTHERS異常處理器。也可以利用PRAGMA EXCEPTION_INIT把一個(gè)異常碼與異常名綁定。

PRAGMA由編譯器控制,PRAGMA在編譯時(shí)處理,而不是在運(yùn)行時(shí)處理。EXCEPTION_INIT告訴編譯器將異常名與ORACLE錯(cuò)誤碼綁定起來,這樣可以通過異常名引用任意的內(nèi)部異常,并且可以通過異常名為異常編寫適當(dāng)?shù)漠惓L幚砥鳌RAGMA EXCEPTION_INIT的語法是:

PRAGMA EXCEPTION_INIT(異常名,異常碼)

這里的異常碼可以是用戶自定義的異常碼,也可以是Oracle系統(tǒng)的異常碼。

案例13:PRAGMA EXCEPTION_INIT異常

代碼演示:PRAGMA EXCEPTION_INIT異常

<<outterseg>>

DECLARE

  null_salary EXCEPTION;

  PRAGMA EXCEPTION_INIT(null_salary, -20101); 

BEGIN

  <<innerStart>> 

  DECLARE

    curr_comm NUMBER;

  BEGIN

    SELECT comm INTO curr_comm FROM emp WHERE empno = &empno;

    IF curr_comm IS NULL THEN   

         RAISE_APPLICATION_ERROR(-20101, 'Salary is missing'); 

    ELSE

      dbms_output.put_line('有津貼');

    END IF;

  END; 

EXCEPTION

  WHEN NO_DATA_FOUND THEN

          dbms_output.put_line('沒有發(fā)現(xiàn)行');

  WHEN null_salary THEN

          dbms_output.put_line('津貼未知'); 

  WHEN OTHERS THEN

           dbms_output.put_line('未知異常');

END;

代碼解析:

① 把異常名稱null_salary與異常碼-20101關(guān)聯(lián),該語句由于是預(yù)編譯語句,必須放在聲明部分。也就是說-20101的異常名稱就是null_salary。

② 嵌套PL/SQL語句塊

③ 在內(nèi)部PL/SQL語句塊中引發(fā)應(yīng)用系統(tǒng)異常-20101。

④ 在外部的PL/SQL語句塊中就可以用異常名null_salary進(jìn)行捕獲。

本文地址:http://www.mudan321.com/dba/kecheng/12525058031.html 轉(zhuǎn)載請(qǐng)注明!


PostgreSQL入門到精通 100+ 個(gè)學(xué)習(xí)資料

Oracle培訓(xùn)機(jī)構(gòu)

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級(jí)講師、Unix/Linux 資深專家...[詳細(xì)了解老師]

免費(fèi)咨詢上課流程 客服在線中

陳衛(wèi)星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復(fù)、性能優(yōu)化 11年Ora...[詳細(xì)了解老師]

免費(fèi)咨詢上課流程 客服在線中

選學(xué)校如何選擇適合自己的學(xué)校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內(nèi)悠久的專業(yè)UNIX培訓(xùn)機(jī)構(gòu),被譽(yù)為中國UNIX 的搖籃。多年來,以提高教學(xué)質(zhì)量為本,強(qiáng)調(diào)素質(zhì)教育,積極引進(jìn)、消化國外的新技術(shù),有效的結(jié)合中國....[詳情]

一站式服務(wù)(從入學(xué)到就業(yè)一幫到底)

入學(xué)

學(xué)習(xí)

就業(yè)

實(shí)操

食宿
地址:北京市海淀區(qū)田村山南路35號(hào)院17號(hào)樓
課程咨詢: 400-0909-964
企業(yè)服務(wù):137 1818 8639(陳經(jīng)理)
部分信息來源于網(wǎng)絡(luò),如有錯(cuò)誤請(qǐng)聯(lián)系指正!
版權(quán)所有@北京神腦資訊技術(shù)有限公司 (CUUG,中國UNIX用戶協(xié)會(huì)) Copyright 2016 ALL Rights Reserved 京ICP備11008061號(hào)-1