有个问题困扰我多时,至今仍找不出原因。我有个存储过程A,使用了事务,另有一个存储过程B,没用事务。A在一个循环里嵌套B。程序平时使用一切正常,但偶然会出现某次循环B里的数据操作没提交,但A里的所有操作都提交成功,包括在这个循环后的操作。当发现后,再次测试A,一切正常。到底是什么原因,希望高手们都出来帮帮小弟,感激不尽啊!

解决方案 »

  1.   

    可能某次在执行B的时候出错,但没有抛给A,所以A可以继续执行,
    建议在B中使用异常捕捉try catch和事务,当有错误时raiserror出来并rollback,
    在A中也使用try catch,如果有捕获到B中的error就rollback.
      

  2.   


    B没有循环,是B在A的循环里。其实A是一张表单的审核过程,循环每行数据更新关联业务数据。可能每100张单的审核会出现一两张单有问题。问题就出现在B没有更新关联数据。