SQL異常處理

2022-10-10 21:39:23 字數 1537 閱讀 5078

----------------------------------異常處理-----------------------------------------

--異常處理,也叫作錯誤處理,通常是把異常記錄在日誌中

----在儲存過程中加上異常處理後,讓異常原因記錄在日誌表中。

--注意:異常處理有自己的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...