❶ Oracle 存儲過程怎麼拋出異常
你說的異常是什麼意思?如果是,執行中的錯誤,那麼可以用「調試」,不過需要有一個系統許可權的擁護才能調試,許可權好象是什麼debug XXXXX。
如果說的是有時執行因為這樣那樣的數據問題出現的異常,那麼一般都是通過exception來拋出異常的,這樣的拋出的異常,你可以自己編代碼,然後輸入一張表內,這樣就可以捕獲異常了。如果1表示沒有主鍵,2表示數據超長等等。具體的寫法網上很多,這里就不寫了。
❷ oracle 存儲過程異常處理
先建一個錯誤跟蹤表
create sequence s_error_id;
CREATE TABLE ERROR_RECORD
(
ERROR_ID NUMBER(10) primary key,
ERROR_CODE NUMBER(10),
ERROR_MSG VARCHAR2(2000),
ERROR_DATE DATE,
ERROR_PROGRAM VARCHAR2(200)
);
--------在過程的例外里向跟蹤表寫入錯誤信息:
create or replace procere day_task is
v_sqlcode ERROR_RECORD.ERROR_CODE%type;
v_msg ERROR_RECORD.error_msg%type;
begin
------program body
exception when others then
--記錄錯誤信息表
v_sqlcode :=sqlcode;
v_msg :=sqlerrm;
insert into error_record(error_code,error_msg,error_date,error_program)
values (v_sqlcode,v_msg,sysdate,『day_task』);
end;
❸ Oracle 定義存儲過程 不能執行,處於無效狀態。
無效狀態有兩種可能:
1、一種是你的存儲過程編輯沒有成功,創建了,但裡面有語法錯誤。
❹ oracle存儲過程 處於無效狀態
1、你的存儲過程有錯誤,編譯不通過。處理於無效狀態。
2、問題
存儲過程中隱式游標的select語句必須要有into子句。
而select*fromtemp_syckzl_zy這是一個沒有意義的語句;
應改為如:selectcol1intov_col1fromtemp_syckzl_zy;
註:col1為表中一欄位,v_col1為一變數
❺ oracle存儲過程中 未找到數據 異常的問題。。。
解決這個辦法很多,按提問者的意思,異常肯定是no
data
found,這個時候你需要檢查在哪出現的這個異常,如果數據不多的話,你可以用一條一條記錄的去試,如果數據量大的話那直接在每個select前先選出count(*)
into
counts,當
counts<>
0的時候再讓它執行下邊的語句,或者直接存儲工程中加異常處理的語句,我一般遇到這種情況都是用第一種,很簡單但是很實用,屢試不爽。哈哈,如果有機會再交流交流
❻ oracle 存儲過程中出現異常的處理
異常是執行這個存儲過程出的異常吧,那就是說只有執行一次這個存儲過程才會拋一次異常么?如果這樣我建議你可以再寫個存儲過程來調用你這個存儲過程,這樣來記錄異常的次數。然後再進行處理!
❼ oracle的存儲過程中如何使得在執行出現異常時程序還可以繼續執行
可能用異常處理
open cur_temp for vc_sql1;
loop
fetch cur_temp
into vc_prcname, vc_prctype;
exit when cur_temp%notfound;
vc_sql2 := '。。。';
begin
execute immediate vc_sql2; --這句代碼有可能會執行出錯,希望在執行出錯時可以忽略該錯誤,繼續往下循環,如何實現?
exception
when others then
end;
end loop;
close cur_temp;
試試這樣行不行。