我有以下程序。(语法并不完美,只是想给你们一个想法)。
begin tran
begin try
while loop
some condition, if true
raiseerror('error', 16, 1)
end try
begin catch
if transaction > 0
rollback tran
select error message
end catch
if transaction > 0
commit tran
问题:
raise 错误会强制 catch 块吗?如果是这样,事务是否会完全回滚(对于循环的所有迭代)?
我希望 #1 是这种情况,是否需要在回滚 tran 后添加“RETURN”?
我问这个问题是因为即使在迭代中出现一些错误之后,循环似乎仍在继续。