我有一个要求,其中我有一个#ValidationList
表,我们在其中记录了导入数据中发现的所有验证错误。
以下是#ValidationList
表格中的数据快照:
Id ErrorMsg
1 Asset # Unknown
1 Unique Name and code is needed
2 Unique Name and code is needed
2 Asset # Unknown
3 Asset # Unknown
3 Unique Name and code is needed
4 Unique Name and code is needed
4 Asset # Unknown
现在所有这些错误字符串都需要在与相同ID的分隔符连接后在原始登台表#ImportedStagingData中更新。
截至目前,我们正在使用游标更新原始表中的错误:
declare Errors Cursor for
Select DISTINCT Id from ##ValidationList
Open Errors
Fetch Next from Errors into @Id
while @@Fetch_status = 0
begin
set @ErrorMessage=null
SELECT @ErrorMessage = COALESCE(@ErrorMessage, '') + ' / ' + ErrMsg
FROM (SELECT ErrorMessage as ErrMsg
FROM ##ValidationList
WHERE Id = @Id) [ErrMsg]
update #ImportedStagingData
set ErrorMessage = @ErrorMessage
where Id = @Id
Fetch Next from Errors into @Id
end
close Errors
deallocate Errors
我们是否有任何方法可以删除此游标实现并使用基于SET的方法来获得更好的性能。请建议。