create procedure p_name (@param1 type,@param2 type,@param3 type)
 as 
BEGIN TRAN
insert into table values (@param1,@param2,@param3)IF @@ERROR>0 GOTO err_label
 IF @@TRANCOUNT > 0  COMMIT TRANerrLabel:
IF @@TRANCOUNT > 0 
begin
ROLLBACK TRAN
end然后可以循环记录最简单的方式就是
将Query.LockType设置为ltBatchOptimistic
UpdateBatch(arAll);
用Adoconnect的事务处理

解决方案 »

  1.   

    一楼已经说得比较清楚了.
    如果楼主执意用一个事务来处理,那么就把一楼所说的方法中有关事务的东西去掉,令存储过程每次执行完后返回一个值给你的前台程序,而事务的启动在你的前台程序中写.
      当后台返回的代码是表示失败时,前台就令事务回GUN,并让程序STOP后面的语句;
      当5条记录每次都返回正常代码时,前台才令事务提交.
    adoConn.BeginTrans;
    adoConn.RoolTrans;
    adoConn.CommitTrans;
    好像是上面的语句.
    还有,你要自己用代码去识别adoCOnn是否处于事务状态,好像是:
    if adoConn.intrans...
    之类的语句.
      

  2.   

    建议用Adoconnect的事务处理 将Query.LockType设置为ltBatchOptimistic 
    UpdateBatch(arAll);