----------------------------------異常處理-----------------------------------------
--異常處理,也叫作錯誤處理,通常是把異常記錄在日誌中
----在儲存過程中加上異常處理後,讓異常原因記錄在日誌表中。
--注意:異常處理有自己的begin..end..,意思就是異常處理的begin..end..和儲存過程的begin..end..不共用。
--語法:
begin----
---執行的語句
exception --
一旦出現異常
when dup_val_on_index then
rollback; --
回滾:指的是撤銷剛剛執行的語句。
sp_log(p_sp_name,p_step,'
異常:'
||sqlcode||sqlerrm); --
sqlcode:異常碼 sqlerrm:具體的異常
when others then
rollback
; sp_log(p_sp_name,p_step,
'異常:
'||sqlcode||
sqlerrm);
end;
例子:
--例:給sp_store中加入異常處理
create
orreplace
procedure sp_store as
begin
sp_log(
'sp_store
',1,'
程式開始');
--①delete
from
dw_store;
sp_log(
'sp_store
',2,'
刪除資料完成');
--②--execute immediate 'truncate table dw_store';
--將最新的資料更新到表中。
begin
(插入資料)
sp_log(
'sp_store
',3,'
插入資料完成');
exception
--一旦出現異常
when dup_val_on_index then
rollback; --
回滾:指的是撤銷剛剛執行的語句。
--然後執行日誌儲存過程
sp_log('
sp_store
',3,'
異常:'
||sqlcode||sqlerrm); --
sqlcode:異常碼 sqlerrm:具體的異常
when others then
rollback
; sp_log(
'sp_store
',3,'
異常:'
||sqlcode||
sqlerrm);
end;
動態sql語句 異常處理
execute immediate 實現ddl declare v ddl varchar2 200 begin v ddl create table mytable as select ename,sal from emp execute immediate v ddl dbms output.p...
SQL派生表別名的異常處理
本次案例介紹 sql實際 一 實際案例解讀 二 sql 錯誤示例 delete from person where id notin select min id from person group by email 上面sql 會發生異常,出現you can t specify target tab...
struts 異常處理 全域性異常處理
記錄一下全域性異常處理的過程 處理主動丟擲的異常,轉向錯誤提示頁面。1 寫乙個自己的異常,繼承runtimeexception,從父類生成構造方法 package me.yndy.srtp.exception suppresswarnings serial public class errorexc...