假设我有从 c# 代码执行的多个存储过程的代码。每个存储过程都有一个提交和一个在异常情况下的回滚。异常在这些存储过程中进行处理并返回已处理的错误消息。
如果我有一个 OracleTransaction.BeginTransaction()“正在运行”,那么在执行存储过程时,在同一连接对象上,c# 代码中的 OracleTransaction.Rollback() 实际上会回滚先前执行的存储过程提交的数据。
逻辑如下:
- 打开连接
- 开始交易
- 执行一个存储过程(内部有提交)
- 如果一切正常,执行另一个存储过程(带提交)。如果不是,则回滚先前的存储过程并完全停止。
- 没有错误提交事务。谢谢你。