事务与存储过程?
xZJJ 2003-06-02 07:52:20 有下面一段代码:
cdsmat.First;
if not dm.adoconn.InTransaction then
dm.adoconn.BeginTrans ;
try
while not cdsmat.Eof do
begin
adospcreat_iss.Parameters.ParamByName('@comid').Value:='aaa';
adospcreat_iss.Parameters.ParamByName('@matno').Value:=cdsmat.fieldbyname('matno').AsString;
...
adospcreat_iss.Parameters.ParamByName('@bz').Value:=bz;
adospcreat_iss.Parameters.ParamByName('@id').Value:=id; //传递参数
adospcreat_iss.Prepared;
adospcreat_iss.ExecProc;
cdsmat.Next;
dm.adoconn.CommitTrans;
except
dm.adoconn.RollbackTrans;
raise;
end;
在循环过程中调用了存储过程,直接插入数据到表中,那么如果在循环过程中发生了问题,不是在发生问题以前的记录都插入数据库中了吗?这个事务好像没有发挥作用了?
请问这种情况应该如何去做才对?
谢谢