您的位置:首页 > 其它

DB2异常处理以及事务提交

2015-07-16 17:39 253 查看
使用开发工具是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;--无日志

基于会话我理解就是在一个存储过程中从开始到执行完。不知道对不对,有大神最好给出正确理解。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: