命名的系統異常 產生原因
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
orreplace
procedure
stu_proc(
--多個用逗號隔開
v_id
innumber
) is
--多個用分號隔開
v_max_id
number
; v_name
varchar2(20
); v_raise exception;
begin
select
max(a.id)
into
v_max_id
from
student a;
ifv_id
>
v_max_id
then
raise v_raise;
endif;
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
-20010, '
v_id not exists!');
when
no_data_found
then
-20011, '
error:不存在!');
endstu_proc;
ORACLE儲存過程異常處理。
create or replace procedure p tx getfaxdata as v errorcode number 出錯的 v errormsg varchar2 200 錯誤的訊息顯示 v currentuser varchar2 8 當前資料庫使用者 v information ...
oracle 儲存過程 異常處理機制
下面將如何在儲存過程中判斷sql語句的錯誤,向大家作乙個詳細地介紹,希望大家讓程式開發人員遵從這樣的方式編寫sql儲存過程,以避免造成在程式聯調過程中應用程式狀態不明確的問題。如以下 表示,在sql儲存過程中可以定義執行狀態的出口引數,而且盡量返回系統報告的sqlcode,而並非個人定義的,這樣可以...
Oracle儲存過程中的異常處理
1.問題 oracle中可以用dbms output.put line來列印提示資訊,但是很容易緩衝區就溢位了。可以用dbms output.enable 1000000 來設定緩衝區的大小。但是有大小,就有可能再溢位 程式寫得太爛,錯誤不斷,不好意思 於是想把異常資訊寫到乙個表中。2.建表 這個容...