DB2異常處理以及事務提交

2021-07-03 20:57:56 字數 1250 閱讀 2052

使用開發工具是toad for db2,

--宣告出錯處理

declare exit handler for sqlexception

begin

set i_code=sqlcode;

set i_err_no=1;

insert into xtb_log values(v_proc_name,i_code);        

commit;

end;

--v_proc_name式儲存過程的名字

--i_code系統錯誤的錯誤碼。

當遇到錯誤的時候就會插入到xtb_log中並且退出(exit),也有回滾以及其他的操作,將exit改下就可以了。

事物提交控制:

p1:begin atomic

insert into gqjl_zcjjjy(jyrq,khdxdh,jyid,jyzh,jffse,dffse,dfzh,jyls,zhye,zy,czy,czsj,bz)

select jyrq,khdxdh,jyid,jyzh,jffse,dffse,dfzh,jylx,zhye,zy,czy,czsj,bz from session.tmp_jyzhjl;

insert into gqjl_zcjjjy(jyrq,khdxdh,jyid,jyzh,jffse,dffse,dfzh,jyls,zhye,zy,czy,czsj,bz)

select jyrq,khdxdh,jyid,jyzh,jffse,dffse,dfzh,jylx,zhye,zy,czy,czsj,bz from session.tmp_dfzhjl;

end p1;     

commit; 

如果第二句話插入失敗,那麼第一句插入的資料也會回滾。

select * from xtb_tab where tjrq=:b;

這裡的:b是輸入引數。

db2基於會話的全域性變數臨時表

declare global temporary table session.tmp_jyzhjl 

(jyrq        int ,--交易日期

khdxdh      int ,

jylsh       int ,--交易流水號

) with replace  --有該錶就替代

on commit preserve rows  --基於會話

not logged;--無日誌

基於會話我理解就是在乙個儲存過程中從開始到執行完。不知道對不對,有大神最好給出正確理解。。。。。。

db2 事務日誌

db2增刪改都會涉及事務,以便於出錯時候能夠回滾。當日誌滿了,還要繼續新增日誌,就會報 964的錯誤 db2檢視日誌的命令是 檢視資料庫的配置引數 get db cfg for 檢視出很多配置資訊,下面幾項是我們的日誌資訊 log file size 4kb logfilsiz 1024 numbe...

DB2儲存過程的異常處理

1 自定義異常 declare condition for sqlstate 注 可以從7 9或t z開頭 2 異常捕捉 declare exit continue undo handler for 異常 sqlstate begin get diagnostics exception 1 sqle...

DB2事務隔離級別

select from tablename where id 1with ur4 rr repeatable read 可重新性,可 重複讀是最高的隔離級別,提供了最大程度的鎖定和最少的並行。產生結果集的所有行都會被鎖定,也就是說,即使不必出現在最終結果集中的行也會被鎖定。在此 該工作單元結束前,任...