我有一个要求,我要循环10条记录,并将这些记录插入到事务中的3个不同的表中。我从while循环与交易中一次一个记录。如何在catch块中出错后继续?
我的要求是,如果前8个记录被成功插入,并且如果语句在第9条记录失败,它应该记录错误并继续插入第10条记录。
存储过程不应该停止,如果任何行有任何错误。
我曾尝试将事务放入子TRY-CATCH块但仍失败。
BEGIN TRY
DECLARE @TotalRecord AS INT = 10
,@LoopStartCount AS INT = 1
,@AskPkQuotationId AS INT;
--Some select stuff here
WHILE(@LoopStartCount <= @TotalRecord)
BEGIN
BEGIN TRY
BEGIN TRAN
--Do some insert update for each record.
COMMIT TRAN
END TRY
BEGIN CATCH
--Log Error and Continue with next record
END CATCH
SET @LoopStartCount = @LoopStartCount + 1;
END
END TRY
BEGIN CATCH
--Log parent error
END CATCH
所以循环不应该停止错误比为什么你需要一个事务? – GuidoG
@GuidoG如果所选记录引发任何错误,应该回滚该插入并继续下一条记录。 –
但如果所选记录在插入时引发错误,则不会插入,因此不需要回滚?或者我错过了什么? – GuidoG