DB2异常处理以及事务提交

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012209894/article/details/46915203

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

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



猜你喜欢

转载自blog.csdn.net/u012209894/article/details/46915203
db2