全面解析Oracle developer的異常處理機制
來源:程序員人生 發布時間:2014-05-08 13:23:52 閱讀次數:3919次
Oracle developer以其快速的數據處理開發而聞名,其異常處理機制也是比較完善,不可小覷。
1、 異常的優點
如果沒有異常,在程序中,應當檢查每個命令的成功還是失敗,如
BEGIN
SELECT ...
-- check for ’no data found’ error
SELECT ...
-- check for ’no data found’ error
SELECT ...
-- check for ’no data found’ error
這種實現的方法缺點在于錯誤處理沒有與正常處理分開,可讀性差,使用異常,可以方便處理錯誤,而且異常處理程序與正常的事務邏輯分開,提高了可讀性,如
BEGIN
SELECT ...
SELECT ...
SELECT ...
...
EXCEPTION
WHEN NO_DATA_FOUND THEN -- catches all ’no data found’ errors
2、 異常的分類
有兩種類型的異常,一種為內部異常,一種為用戶自定義異常,內部異常是執行期間返回到PL/SQL塊的ORACLE錯誤或由PL/SQL代碼的某操作引起的錯誤,如除數為零或內存溢出的情況。用戶自定義異常由開發者顯示定義,在PL/SQL塊中傳遞信息以控制對于應用的錯誤處理。
每當PL/SQL違背了ORACLE原則或超越了系統依賴的原則就會隱式的產生內部異常。因為每個ORACLE錯誤都有一個號碼并且在PL/SQL中異常通過名字處理,ORACLE提供了預定義的內部異常。如SELECT INTO 語句不返回行時產生的ORACLE異常NO_DATA_FOUND。對于預定義異常,現將最常用的異常列舉如下:
exception oracle error sqlcode value condition
no_data_found ora-01403 +100 select into 語句沒有符合條件的記錄返回
too_mang_rows ora-01422 -1422 select into 語句符合條件的記錄有多條返回
dup_val_on_index ora-00001 -1 對于數據庫表中的某一列,該列已經被限制為唯一索引,程序試圖存儲兩個重復的值
value_error ora-06502 -6502 在轉換字符類型,截取或長度受限時,會發生該異常,如一個字符分配給一個變量,而該變量聲明的長度比該字符短,就會引發該異常
storage_error ora-06500 -6500 內存溢出
zero_divide ora-01476 -1476 除數為零
case_not_found ora-06592 -6530 對于選擇case語句,沒有與之相匹配的條件,同時,也沒有else語句捕獲其他的條件
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈