mydm.BeginTrans 
try
             with  SQLCMD do begin
                   commandtext:=''//一个存储过程
                   Execute;
             end;
             mydm.CommitTrans;
               Sale.Requery();            
             except on E:Exception do begin
                 mydm.RollbackTrans;
                 showmenssage(e.message)
             
             end;
 end;当存储过程出错了,事物会回滚RollbackTrans,再执行时提示无法在此会话中启动更多的事务