set xact_abort on   --当出错全部回滚
begain transactiondeclare @intErrorSum intdeclare @tablename varchar(200)
declare @strSQL1 varchar(1000)
set @strSQL1='update '+@tablename+' set name=''zhu'''
exec (@strSQL1)
set @intErrorSum=@intErrorSum+@@errordeclare @strSQL2 varchar(1000)
set @strSQL2='insert into '+@tablename+'(xh) values(20)'
exec (@strSQL2) 
set @intErrorSum=@intErrorSum+@@errorif @intErrorSum>0    --错误就回滚
    rollback transaction
else                 --否则释放事务
    commit transaction