一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Oracle PL/SQL開發(fā)基礎(chǔ)(第三十彈:預(yù)定義異常)

 張小龍net館藏 2017-10-18

無論是預(yù)定義錯(cuò)誤還是自定義錯(cuò)誤,Oracle在內(nèi)部都會(huì)隱含地觸發(fā)一個(gè)錯(cuò)誤,每個(gè)錯(cuò)誤都有一個(gè)序號(hào),SQLCODE就是異常的編碼,SQLERRM用來獲取異常的信息。但是在PL/SQL進(jìn)行異常處理時(shí),不能直接使用異常編碼,必須使用一個(gè)名字來引用和處理異常。因此PL/SQL為一些公共的錯(cuò)誤定義了一系列的預(yù)定義異常。
常見的預(yù)定義異常如下:

Oracle錯(cuò)誤號(hào) SQLCODE值 異常名稱 異常描述
ORA-00001 -1 DUP_CAL_ON_INDEX 唯一索引對(duì)應(yīng)的列上有重復(fù)值
ORA-00051 -51 TIMEOUT_ON_RESOURCE Oracle在等待資源時(shí)超時(shí)
ORA-01001 -1001 INVALID_CURSOR 在不合法的游標(biāo)上進(jìn)行操作
ORA-01012 -1012 NOT_LOGGED_ON PL/SQL應(yīng)用程序在沒有連接Oracle數(shù)據(jù)庫的情況下訪問數(shù)據(jù)
ORA-01017 -1017 LOGIN_DENIED PL/SQL應(yīng)用程序連接Oracle數(shù)據(jù)庫時(shí)提供了不正確的用戶名或密碼
ORA-01403 100 NO_DATA_FOUND SELECT INTO語句沒有返回?cái)?shù)據(jù),或者我們的程序引用了一個(gè)嵌套表中被刪除了的元素或索引表中未初始化的元素。SQL聚合函數(shù),如AVG和SUM,總是能返回一個(gè)值或空。所以,一個(gè)調(diào)用聚合函數(shù)的SELECT INTO語句從來不會(huì)拋出NO_DATA_FOUND異常。FETCH語句最終會(huì)取不到數(shù)據(jù),當(dāng)這種情況發(fā)生時(shí),不會(huì)有異常拋出。
ORA-01410 -1410 SYS_INVALID_ROWID 從字符串向ROWID轉(zhuǎn)換發(fā)生錯(cuò)誤,因?yàn)樽址⒉淮硪粋€(gè)有效的ROWID
ORA-01422 -1422 TOO_MANY_ROWS 執(zhí)行SELECT INTO時(shí),結(jié)果集超過一行
ORA-01476 -1476 ZERO_DIVIDE 程序嘗試除以0
ORA-01722 -1722 INVALID_NUMBER 在一個(gè)SQL語句中,由于字符串并不代表一個(gè)有效的數(shù)字,導(dǎo)致字符串向數(shù)字轉(zhuǎn)換時(shí)會(huì)發(fā)生錯(cuò)誤。當(dāng)FETCH語句的LIMIT子句表達(dá)式后面不是一個(gè)正數(shù)時(shí),這個(gè)異常也會(huì)被拋出。
ORA-06500 -6500 STORAGE_ERROR PL/SQL運(yùn)行時(shí)內(nèi)存溢出或內(nèi)存不足
ORA-06501 -6501 PROGRAM_ERROR PL/SQL程序發(fā)生內(nèi)部錯(cuò)誤
ORA-06502 -6502 VALUE_ERROR 賦值時(shí),變量長度不足以容納實(shí)際數(shù)據(jù)。
ORA-06504 -6504 ROWTYPE_MISMATCH 賦值語句中使用的主游標(biāo)變量和PL/SQL游標(biāo)變量的類型不兼容。
ORA-06511 -6511 CURSOR_ALREADY_OPEN 程序嘗試打開一個(gè)已經(jīng)打開的游標(biāo)。一個(gè)游標(biāo)在重新打開之前必須關(guān)閉。
ORA-06530 -6530 ACCESS_INTO_NULL 嘗試向一個(gè)為NULL的對(duì)象的屬性賦值
ORA-06531 -6531 COLLECTION_IS_NULL 程序嘗試調(diào)用一個(gè)未初始化嵌套表或變長數(shù)組的集合方法(不包括EXISTS),或者是程序嘗試為一個(gè)未初始化嵌套表或變長數(shù)組的元素賦值
ORA-06532 -6532 SUBSCRIPT_OUTSIDE_LIMIT 程序引用一個(gè)嵌套表或變長數(shù)組,但使用的下標(biāo)索引不在合法的范圍內(nèi)。
ORA-06533 -6533 SUBSCRIPT_BEYOND_COUNT 程序引用一個(gè)嵌套表或變長數(shù)組元素,但使用的下標(biāo)索引超過嵌套表或變長數(shù)組元素總個(gè)數(shù)
ORA-06592 -6592 CASE_NOT_FOUND CASE語句中沒有任何WHEN子句滿足條件,并且沒有編寫ELSE子句

使用預(yù)定義異常如:

DECLARE
   v_empno1 NUMBER(4):=&empno1;                            --定義員工查詢條件變量
   v_empno2 NUMBER(4):=&empno2;
   v_empno3 NUMBER(4):=&empno3;   
   v_sal1 NUMBER(10,2);                                    --定義保存員工薪資的變量
   v_sal2 NUMBER(10,2);
   v_sal3 NUMBER(10,2); 
   v_selectcounter NUMBER := 1;                            --查詢計(jì)數(shù)器變量      
BEGIN
   SELECT sal INTO v_sal1 FROM emp WHERE empno=v_empno1;  --查詢員工薪資信息
   v_selectcounter:=2;
   SELECT sal INTO v_sal2 FROM emp WHERE empno=v_empno2;
   v_selectcounter:=3;   
   SELECT sal INTO v_sal3 FROM emp WHERE empno=v_empno3;
EXCEPTION
   WHEN NO_DATA_FOUND THEN                                 --處理未找到數(shù)據(jù)的異常
     DBMS_OUTPUT.PUT_LINE('錯(cuò)誤編號(hào):'||SQLCODE||' 錯(cuò)誤消息:'||SQLERRM
                              ||' 觸發(fā)異常的位置是:'||v_selectcounter);   
END; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲av日韩av高潮无打码| 亚洲视频一区二区久久久| 亚洲成人精品免费在线观看| 国产日韩精品激情在线观看| 中文字幕精品一区二区三| 欧美尤物在线观看西比尔| 日韩成人动画在线观看| 亚洲欧美国产中文色妇| 欧美日韩国产午夜福利| 日本人妻的诱惑在线观看| 妻子的新妈妈中文字幕| 亚洲日本久久国产精品久久| 亚洲综合色婷婷七月丁香| 麻豆精品视频一二三区| 中文字幕一区二区三区中文| 色婷婷国产精品视频一区二区保健 | 国产精品久久久久久久久久久痴汉| 激情中文字幕在线观看| 欧美日韩国产自拍亚洲| 又大又长又粗又猛国产精品| 人妻中文一区二区三区| 日本高清一道一二三区四五区| 欧美精品女同一区二区| 国产精品色热综合在线| 日系韩系还是欧美久久| 亚洲性日韩精品一区二区| 好吊视频一区二区在线| 日韩中文字幕欧美亚洲| 丰满少妇高潮一区二区| 欧美日韩人妻中文一区二区| 免费特黄欧美亚洲黄片| 特黄大片性高水多欧美一级| 欧美日韩有码一二三区| 成人亚洲国产精品一区不卡| 免费亚洲黄色在线观看| 日本黄色录像韩国黄色录像| 亚洲中文字幕剧情在线播放| 欧美一级日韩中文字幕| 人妻熟女欲求不满一区二区| 欧美日韩精品一区免费| 国产在线一区二区三区不卡|