如果用ADO的隐性事务,只能回滚编译错误,不能回滚逻辑错误.即 ADOConnnection.BeginTrans<br>....<br>adoconnection.commit<br>.....<br>要解决这个问题用显式事务:<br> SQL.Add('BEGIN TRANSACTION') ;<br> SQL.Add(.....) ; //加入多个执行语句<br> SQL.Add(.....) ;<br> SQL.Add(.....) ;<br> SQL.Add(.....) ;<br> SQL.Add('if @@ERROR <> 0'+ #13#10 +<br> 'begin'+ #13#10 +<br> ' ROLLBACK TRANSACTION'+ #13#10 +<br> ' RETURN'+ #13#10 +<br> 'end else'+#13#10+<br> 'COMMIT TRANSACTION' ) ;