首页 > 解决方案 > 在 Delphi 中,TADOStoredProc 可以在 BeginTrans/CommitTrans 中执行吗?

问题描述

我们目前有一个服务,它执行一个循环,加载一个 TADStoredProc(通过 StoredProc.Parameters.CreateParameter),然后执行一个 ExecProc 将其插入到我们的表中。

有没有办法可以将整个循环包装在 TADOConnection.BeginTrans 中,然后用 ADOConnection.CommitTrans 完成?基本上我希望做一个批量插入。

标签: databasedelphiado

解决方案


是的,可以在事务内部调用存储过程,并且在事务提交之前,任何插入/删除/修改的记录都不会应用于数据库,例如:

ADOConnection1.BeginTrans;
try
  // execute TADOStoredProc as many times as you need...
  ADOConnection1.CommitTrans;
except
  ADOConnection1.RollbackTrans;
  raise;
end;

推荐阅读