使用開發工具是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 可重新性,可 重複讀是最高的隔離級別,提供了最大程度的鎖定和最少的並行。產生結果集的所有行都會被鎖定,也就是說,即使不必出現在最終結果集中的行也會被鎖定。在此 該工作單元結束前,任...