Chinaunix

标题: 特急:cli程序有时无法rollback [打印本页]

作者: gzbill    时间: 2004-06-29 21:44
标题: 特急:cli程序有时无法rollback
各位大虾,请指教:

  我有一服务端的帐务处理程序,用CLI编写,事务处理方式,大概如下:

      ret1=Sqltransact(SQL_NULL_ENV,hdbc_db1,SQL_COMMIT);
      ret2=Sqlsetconnectoption   (hdbc_db1,
                       SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_OFF);
      
        ret = 0;
        ret = insert_table1(hstmt_db1,...);
        if ( !ret )
            ret = update_table2(hstmt_db1,...);
      
       if (ret)
      {
         ret3=Sqltransact(SQL_NULL_ENV,hdbc_db1,SQL_ROLLBACK);
         ret4=Sqlsetconnectoption   (hdbc_db1,
                       SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_ON);
       }
       else
       {
         ret5=Sqltransact(SQL_NULL_ENV,hdbc_db1,SQL_COMMIT);
         ret6=Sqlsetconnectoption   (hdbc_db1,
                       SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_ON);
       }
      
     其中ROLLBACK时大部分时间没有问题,但是偶尔ret3返回-1,
导致数据不一致,严重影响帐务。

======
烦恼的人!
======
作者: wupeng    时间: 2004-06-30 23:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: gzbill    时间: 2004-07-01 10:30
标题: 特急:cli程序有时无法rollback
谢谢回复!

大部分是,但有时update也不能rollbak.
是不是CLI函数有BUG?
作者: wupeng    时间: 2004-07-01 15:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: gzbill    时间: 2004-07-01 16:56
标题: 特急:cli程序有时无法rollback
好像是ret4吧。

因为那些cli函数被公司封装为公共函数,不敢动。

你碰到过SQLTransact函数rollback失败的吗?

DB2好像有这方面的补丁程序,不知Informix有没有?
作者: wupeng    时间: 2004-07-01 17:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: gzbill    时间: 2004-07-02 22:01
标题: 特急:cli程序有时无法rollback
老大,CLI中好像没有BEGIN WORK之类的,我只在SPL和dbaccess中用过。上面的那些就是用来模拟他们的功能,公司已经将其封装成begin_tran的格式,提供事务处理的功能。
我主要是想了解SQLTransact函数何时会rollback不成功?当然
如果之前调用SQLDisconnect肯定会出错,但我的程序只是在
退出前才会使用这些来清理,其它地方无法找到连接句炳被K掉的
语句。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2