使用开发工具是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;--无日志
基于会话我理解就是在一个存储过程中从开始到执行完。不知道对不对,有大神最好给出正确理解。。。。。。