當前位置:首頁 » 存儲配置 » oracle存儲過程異常捕獲

oracle存儲過程異常捕獲

發布時間: 2022-10-09 05:37:03

㈠ Oracle 如何捕獲異常信息

一般寫在存儲過程處理異常。
exception
when others then
out_mes:=out_mes || '執行失敗!因為'|| sqlcode || '錯誤' ;
out_mes你自己可以處理,插入日誌表中 或作為輸出參數。

㈡ ORACLE怎麼在子存儲過程中拋出異常,父存儲過程捕捉子存儲過程拋出的異常,有沒有例子呀

把子存儲過程中的異常處理去掉,父存儲過程就能捕捉到異常了

㈢ Oracle 存儲過程怎麼拋出異常

你說的異常是什麼意思?如果是,執行中的錯誤,那麼可以用「調試」,不過需要有一個系統許可權的擁護才能調試,許可權好象是什麼debug XXXXX。
如果說的是有時執行因為這樣那樣的數據問題出現的異常,那麼一般都是通過exception來拋出異常的,這樣的拋出的異常,你可以自己編代碼,然後輸入一張表內,這樣就可以捕獲異常了。如果1表示沒有主鍵,2表示數據超長等等。具體的寫法網上很多,這里就不寫了。

㈣ oracle 存儲過程裡面有一條update語句會造成主鍵沖突 如何捕獲這個異常 取消這個update 繼續運行

使用begin end塊把update語句的異常捕獲後處理一下,就只會影響條記錄,而不是回滾整批數據。

㈤ oracle如何捕獲存儲過程報錯是哪一行

如果資料庫是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),這個函數能夠返回錯誤行,可以套用以下格式:
create or replace procere prc_test(參數) is
v_no number;
begin
select no into v_no from zrp;
exception
when others then
dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||
sqlerrm||chr(10)||
dbms_utility.format_error_backtrace());
end;
這樣寫的好處是,當程序發成異常,唄exception捕獲後,就會列印出錯誤信息及發生錯誤的行號

㈥ 請教各位高手 oracle 存儲過程 如何獲得 捕獲異常的內容

--通過sqlcode , sqlerrm 這兩個內置變數來查看,例如:

DECLARE
--聲明異常
some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition

v_ErrorCode NUMBER; -- Variable to hold the error message code
v_ErrorText VARCHAR2(200); -- Variable to hold the error message text

BEGIN
--...
--拋出異常
IF ( ... ) THEN --(括弧內填拋出異常的條件)
RAISE some_kinds_of_err;
END IF;
--...
EXCEPTION
--捕捉異常
WHEN some_kinds_of_err THEN
/* do something to Handler the errors */
null;
--捕捉其他異常,並獲得 捕獲異常的內容
WHEN OTHERS THEN
v_ErrorCode := SQLCODE;
v_ErrorText := SUBSTR(SQLERRM, 1, 200);
-- Note the use of SUBSTR here.

dbms_output.put_line(v_ErrorCode || '::'||v_ErrorText);
END;
/

/**
sqlcode 就是錯誤代碼
sqlerrm 就是sql錯誤信息。注意用substr來截取,否則輸出很難看。

**/

㈦ oracle 插入時報錯 如何捕獲該處理異常。

這種情況我遇到過,可能的原因是表A和表B中對應欄位的數據值類型不同,建議檢查一下。
可以用EXCEPTION 來捕獲這個異常,並將捕獲到的異常存儲在一張表裡,以便查詢,這樣就不會中斷存儲過程的執行,舉例如下:
declare
...... -- 其他變數
V_ERRORCODE NUMBER; -- 錯誤代碼
V_ERRORMSG VARCHAR2(6000); -- 錯誤信息
V_INFORMATION VARCHAR2(6000); -- 提示信息
begin
...... --其他SQL語句
insert /*+ append */ into A select * from B;
exception
when others then
v_ErrorCode := SQLCODE;
v_ErrorMsg := SQLERRM;
v_Information := TO_CHAR(v_ErrorCode) || v_ErrorMsg ;
insert into T_ERR(code,mgs,info) values(v_ErrorCode,v_ErrorMsg,v_Information);
commit;
end;

㈧ oracle 存儲過程如何捕獲特定異常

條件改成下面的。
if sqlcode=-1427

㈨ 請教各位高手 oracle 存儲過程 如何將獲得捕獲異常的內容寫入一張表裡

可以先定義個變數,發生異常的時候將異常信息賦值給變數,插入表的時候用變數,
日誌表沒給表結構,我自己重新定義了一個,測試ok。
CREATE TABLE T_LOG_ERROR
(ERR_ID NUMBER,
ERR_TIME DATE,
ERR_CODE NUMBER,
ERR_INFOR VARCHAR2(4000)
);

create or replace procere p_testone is
v number(2);
v_sqlcode number;
v_sqlerrm varchar2(4000);
begin
select 1 / 0 into v from al;

--異常處理
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
v_sqlcode :=sqlcode;
v_sqlerrm :=SUBSTR(sqlerrm, 1, 2000);
insert into t_log_error values(1,sysdate,v_sqlcode,v_sqlerrm);
commit;
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));
end;

執行存儲過程後就可以把異常信息記錄到表t_log_error了。

㈩ Oracle怎麼捕獲ora-00942的異常

不知道你想在什麼環境下捕獲,不知道你說的SQL是怎麼捕獲,或者你說的是腳本
如果是在存儲過程中捕獲
有兩個思路吧,

1、直接使用普通的異常處理,獲取異常的代碼,匹配是否為00942,然後就捕獲到這個異常。
2、自定義異常處理,使用數據字典,首先查詢數據字典中是否存在這表,如果不存在,就產生一個自定義的異常,在這個異常里你做處理。
------------------------------------------------------------------------------------

declare
myexception exception;
--表個數
v_num integer :=0;
begin
--查詢表名為MY_USER表個數
SELECT count(*) into v_num FROM tabs WHERE table_name = 'MY_USER'
if v_num=0 then
raise myexception;
end if;
exception
when myexception then
raise_application_error(20001,'my exception happens');
when others then
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
end
----------------------------------------------------------------------------------------
偽代碼,你可以嵌到你的存儲過程中去使用。

熱點內容
win7c盤加密 發布:2025-05-14 15:04:49 瀏覽:510
dm碼編程 發布:2025-05-14 15:03:56 瀏覽:404
apache加密 發布:2025-05-14 14:49:13 瀏覽:969
安卓什麼軟體蘋果不能用 發布:2025-05-14 14:49:03 瀏覽:771
jsoupjava 發布:2025-05-14 14:38:00 瀏覽:887
影豹選哪個配置最好 發布:2025-05-14 14:28:50 瀏覽:255
定期預演算法的 發布:2025-05-14 14:24:08 瀏覽:894
interbase資料庫 發布:2025-05-14 13:49:50 瀏覽:691
微商海報源碼 發布:2025-05-14 13:49:42 瀏覽:347
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:611