Oracle Exception
Oracle存儲過程的異常處理
1、為了提高存儲過程的健壯性,避免運行錯誤,當(dāng)建立存儲過程時應(yīng)包含異常處理部分。
2、異常(EXCEPTION)是一種PL/SQL標(biāo)識符,包括預(yù)定義異常、非預(yù)定義異常和自定義異常;
3、預(yù)定義異常是指由PL/SQL提供的系統(tǒng)異常;非預(yù)定義異常用于處理與預(yù)定義異常無關(guān)的Oracle錯誤(如完整性約束等);自定義異常用于處理與Oracle錯誤的其他異常情況。
4、RAISE_APPLICATION_ERROR用于自定義錯誤消息,并且消息號必須在-20000~-20999之間
?????????????????
命名的系統(tǒng)異常 ??? 產(chǎn)生原因?
access_into_null ?? 未定義對象?
case_not_found ??? case中若未包含相應(yīng)的when,并且沒有設(shè)置?
collection_is_null ?? 集合元素未初始化?
curser_already_open ?? 游標(biāo)已經(jīng)打開?
dup_val_on_index ?? 唯一索引對應(yīng)的列上有重復(fù)的值?
invalid_cursor ??? 在不合法的游標(biāo)上進(jìn)行操作?
invalid_number??? 內(nèi)嵌的 sql 語句不能將字符轉(zhuǎn)換為數(shù)字??
no_data_found ??? 使用 select into 未返回行,或應(yīng)用索引表未初始化的??
too_many_rows ??? 執(zhí)行 select into 時,結(jié)果集超過一行?
zero_divide ??? 除數(shù)為 0?
subscript_beyond_count ?? 元素下標(biāo)超過嵌套表或varray的最大值?
subscript_outside_limit?? 使用嵌套表或 varray 時,將下標(biāo)指定為負(fù)數(shù)?
value_error ??? 賦值時,變量長度不足以容納實際數(shù)據(jù)?
login_denied ??? pl/sql 應(yīng)用程序連接到 oracle 數(shù)據(jù)庫時,提供了不正確的用戶名或密碼 ?????確的用戶名或密碼?
not_logged_on ??? pl/sql 應(yīng)用程序在沒有連接 oralce 數(shù)據(jù)庫的情況下訪問數(shù)據(jù) ?????問數(shù)據(jù)?
program_error ??? pl/sql 內(nèi)部問題,可能需要重裝數(shù)據(jù)字典& pl./sql系統(tǒng)包?????統(tǒng)包?
rowtype_mismatch????????? 主游標(biāo)變量與 pl/sql 游標(biāo)變量的返回類型不兼容?
self_is_null ??? 使用對象類型時,在 null 對象上調(diào)用對象方法?
storage_error ??? 運行 pl/sql 時,超出內(nèi)存空間?
sys_invalid_id ??? 無效的 rowid 字符串?
timeout_on_resource ?? oracle 在等待資源時超時
???????
???????????
--自定義異常處理CREATE OR REPLACE PROCEDURE stu_proc
(
--多個用逗號隔開
v_id IN NUMBER
) IS
--多個用分號隔開
v_max_id NUMBER;
v_name VARCHAR2(20);
v_raise EXCEPTION;
BEGIN
SELECT MAX(a.id) INTO v_max_id FROM student a;
IF v_id>v_max_id THEN
RAISE v_raise;
END IF;
SELECT o.sname INTO v_name FROM student o WHERE o.id=v_id;
dbms_output.put_line('學(xué)生名稱為:'||v_name);
EXCEPTION
WHEN v_raise THEN
RAISE_APPLICATION_ERROR(-20010, 'v_id not exists!');
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20011, 'ERROR:不存在!');
END stu_proc;
轉(zhuǎn)載于:https://www.cnblogs.com/sdream/p/5922819.html
總結(jié)
以上是生活随笔為你收集整理的Oracle Exception的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VNC轻松连接远程Linux桌面
- 下一篇: Codeforces-722C-Dest