Sql server while循环内的错误处理
我有8张桌子。一名家长和7名子女。在while循环中,从表中逐个删除。 如果在循环过程中出现任何错误,则所有事务回滚。在while循环中是否可能 例如: 声明@Count int、@intFlag int 开始尝试 set@Count=从MyTable中选择countID,其中[Date]介于getdate-1和getdate之间 如果@Count>0 开始 设置@intFlag=1 开始交易Sql server while循环内的错误处理,sql-server,tsql,sql-server-2008-r2,Sql Server,Tsql,Sql Server 2008 R2,我有8张桌子。一名家长和7名子女。在while循环中,从表中逐个删除。 如果在循环过程中出现任何错误,则所有事务回滚。在while循环中是否可能 例如: 声明@Count int、@intFlag int 开始尝试 set@Count=从MyTable中选择countID,其中[Date]介于getdate-1和getdate之间 如果@Count>0 开始 设置@intFlag=1 开始交易 while (@intFlag <= @Count) begin update
while (@intFlag <= @Count)
begin
update MyTable1
set column1 = 1
where [Date] between getdate()-1 and getdate();
update MyTable2
set column2 = 1
where [Date] between getdate()-1 and getdate();
set @intFlag = @intFlag + 1
end;
承诺
结束
结束尝试
开始捕捉
如果@trancount>0回滚
端接
如果在其回滚所有子表事务的过程中出现任何错误,请尝试循环上方的catch块,如下所示
while (@intFlag <= @Count)
begin
update MyTable1
set column1 = 1
where [Date] between getdate()-1 and getdate();
update MyTable2
set column2 = 1
where [Date] between getdate()-1 and getdate();
set @intFlag = @intFlag + 1
end;
BEGIN TRANSACTION
BEGIN TRY
/*
* YOUR LOOP
*/
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
在循环之前启动事务。如果您可以使用try-catch来检测错误,那么在try-catch块中有一个循环,在try块的末尾有commit事务,在catch块中有rollback