DB2异常处理以及事务提交

使用开发工具是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;--无日志

基于会话我理解就是在一个存储过程中从开始到执行完。不知道对不对,有大神最好给出正确理解。。。。。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值