未处理sqlexception中value_plsql异常处理
Oracle
中的
exception
——
(Raise)
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_many_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
語句捕獲其他的條件
總結
以上是生活随笔為你收集整理的未处理sqlexception中value_plsql异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python进程共享内存_Python进
- 下一篇: can bus 中spn是什么_CP A