ORACLE例外(異常)

ORACLE異常處理:

在Oracle數據庫中主要分爲三類異常:

                                 1,預定義的Oracle數據庫錯誤;

                                 2,非預定義的Oracle數據庫錯誤;

                                  3,用戶定義的錯誤;

----預定義異常 --在Oracle中已經預先定義好名稱的異常;

     常見的有: no_data_found ; 沒有找到數據

                too_many_rows;   找到太多數據

                invalid_cursor; 失效的遊標

                zero_divide;     除數爲零  捕捉異常方法--直接在異常處理程序中按名稱進行捕捉。通過用when 子句。

----非預定義異常--在數據庫中沒有定義異常名稱的異常;爲了捕捉到非預定義的異常,必須先創建一個異常名稱,然後將錯誤編號和剛剛創建的異常名稱關聯起來,這樣就可以在異常處理部分通過定義的異常名稱來捕捉這個異常了。

----用戶自定義異常 --當數據庫的一些情況不符合用戶的規定時,用戶人爲判斷的異常。需要在聲明部分定義異常的名稱,然後在執行體中,通過一些邏輯判斷決定是否違反了用戶的規則,如果違反,則調用raise命令人爲觸發剛纔定義的異常,並在異常處理部分捕捉到這個異常進行處理。

爲了能夠記錄發生的錯誤信息,Oracle提供了兩個相關函數:

                1,sqlcode: 返回錯誤代碼

                2,sqlerrm:返回與錯誤代碼關聯的消息

異常是自裏向外逐級傳遞的

 

案例1:如果empno的值不存在的時候取到將會是null,此時我們要進行捕獲

declare

  v_ename varchar2(5);

  v_sal number(7,2);

begin

select ename,sal into v_ename,v_sal from emp  where empno=&no;

dbms_output.put_line('僱員名:'||v_ename||'工資'||v_sal);

--異常處理

exception

when no_data_found then

dbms_output.put_line('朋友,你輸入的編號有誤!');

end;

/

 

Exception

    When others then --異常祖宗

       Rollback;

                       Exception

       when others then

              dbms_output.put_line("全項目-複製認購計劃數據異常!");

         roolback;

                           excetpion

                when no_data_found then

                 v_JIAOLOUJIHUANID:=null;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章