EXCEPTION
專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)漢南免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
WHEN excepttion_name1 then
........
WHEN excepttion_name2 then
........
WHEN excepttion_name3 then
........
End;
一般寫在存儲過程處理異常。
exception
when others then
out_mes:=out_mes || '執(zhí)行失敗!因為'|| sqlcode || '錯誤' ;
out_mes你自己可以處理,插入日志表中 或作為輸出參數(shù)。
--通過sqlcode , sqlerrm 這兩個內(nèi)置變量來查看,例如:
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 --(括號內(nèi)填拋出異常的條件)
RAISE some_kinds_of_err;
END IF;
--...
EXCEPTION
--捕捉異常
WHEN some_kinds_of_err THEN
/* do something to Handler the errors */
null;
--捕捉其他異常,并獲得 捕獲異常的內(nèi)容
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來截取,否則輸出很難看。
**/
1、出現(xiàn)異常,會自動回滾,不用為了回滾而捕獲異常
2、如需要對異常進(jìn)行處理,可參考以下異常捕獲邏輯
begin
--代碼處理邏輯。。。
exception
when?no_data_found?then
--no_data_found異常處理。。。
rollback;
when?others?then
--其他異常處理。。。
rollback;
以上。