我有一個要求,我要循環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