Oracle預存程序的異常處理

來源:互聯網
上載者:User

標籤:ror   invalid   alc   設定   cti   ready   already   ali   程式   

1、為了提高預存程序的健壯性,避免運行錯誤,當建立預存程序時應包含異常處理部分。

2、異常(EXCEPTION)是一種PL/SQL標識符,包括預定義異常、非預定義異常和自訂異常;

3、預定義異常是指由PL/SQL提供的系統異常;非預定義異常用於處理與預定義異常無關的Oracle錯誤(如完整性條件約束等);自訂異常用於處理與Oracle錯誤的其他異常情況。

4、RAISE_APPLICATION_ERROR用於自訂錯誤訊息,並且訊息編號必須在-20000~-20999之間

                 

命名的系統異常    產生原因 

access_into_null   未定義對象 

case_not_found    case中若未包含相應的when,並且沒有設定 

collection_is_null   集合元素未初始化 

curser_already_open   遊標已經開啟 

dup_val_on_index   唯一索引對應的列上有重複的值 

invalid_cursor    在不合法的遊標上進行操作 

invalid_number    內嵌的 sql 語句不能將字元轉換為數字  

no_data_found    使用 select into 未返回行,或應用索引表未初始化的  

too_many_rows    執行 select into 時,結果集超過一行 

zero_divide    除數為 0 

subscript_beyond_count   元素下標超過巢狀表格或varray的最大值 

subscript_outside_limit   使用巢狀表格或 varray 時,將下標指定為負數 

value_error    賦值時,變數長度不足以容納實際資料 

login_denied    pl/sql 應用程式串連到 oracle 資料庫時,提供了不正確的使用者名稱或密碼      確的使用者名稱或密碼 

not_logged_on    pl/sql 應用程式在沒有串連 oralce 資料庫的情況下訪問資料      問資料 

program_error    pl/sql 內部問題,可能需要重裝資料字典& pl./sql系統包     統包 

rowtype_mismatch          主遊標變數與 pl/sql 遊標變數的傳回型別不相容 

self_is_null    使用物件類型時,在 null 對象上調用對象方法 

storage_error    運行 pl/sql 時,超出記憶體空間 

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(‘學生名稱為:‘||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;

Oracle預存程序的異常處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.