Oracle入門知識:PL/SQL的預定義異常
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢Oracle入門知識:PL/SQL的預定義異常,在程序運行時出現的錯誤,稱為異常。發生異常后,語句將停止執行,PL/SQL引擎立即將控制權轉到PL/SQL塊的異常處理部分。異常處理機制簡化了代碼中的錯誤檢測。PL/SQL中任何異常出現時,每一個異常都對應一個異常碼和異常信息。比如:
圖1 PL/SQL中的異常
·預定義異常
為了Oracle開發和維護的方便,在Oracle異常中,為常見的異常碼定義了對應的異常名稱,稱為預定義異常,常見的預定義異常有:
異常名稱 |
異常碼 |
描述 |
DUP_VAL_ON_INDEX |
ORA-00001 |
試圖向唯一索引列插入重復值 |
INVALID_CURSOR |
ORA-01001 |
試圖進行非法游標操作。 |
INVALID_NUMBER |
ORA-01722 |
試圖將字符串轉換為數字 |
NO_DATA_FOUND |
ORA-01403 |
SELECT INTO語句中沒有返回任何記錄。 |
TOO_MANY_ROWS |
ORA-01422 |
SELECT INTO語句中返回多于1條記錄。 |
ZERO_DIVIDE |
ORA-01476 |
試圖用0作為除數。 |
CURSOR_ALREADY_OPEN |
ORA-06511 |
試圖打開一個已經打開的游標 |
表6 PL/SQL中預定義異常
PL/SQL中用EXCEPTION關鍵字開始異常處理。具體語法是:
語法格式:異常處理
BEGIN --可執行部分 EXCEPTION -- 異常處理開始 WHEN 異常名1 THEN --對應異常處理 WHEN 異常名2 THEN --對應異常處理 …… WHEN OTHERS THEN --其他異常處理 END; |
語法解析:
異常發生時,進入異常處理部分,具體的異常與若干個WHEN子句中指明的異常名匹配,匹配成功就進入對應的異常處理部分,如果對應不成功,則進入OTHERS進行處理。
案例10 :異常處理
代碼演示:異常處理
SQL> DECLARE 2 newSal emp.sal % TYPE; 3 BEGIN 4 SELECT sal INTO newSal FROM emp; 5 EXCEPTION 6 WHEN TOO_MANY_ROWS THEN 7 dbms_output.put_line('返回的記錄太多了'); 8 WHEN OTHERS THEN 9 dbms_output.put_line('未知異常'); 10 END; 11 / 返回的記錄太多了 PL/SQL procedure successfully completed |