我有一个通过 XML 接收唯一标识符列表的存储过程。一个或多个字符串可能不是有效的唯一标识符。SQLServer 在此转换时引发异常并且整个过程中止。
是否可以抑制这些错误并继续?如果除一个 id 之外的所有 id 都有效,我想要有效 id 的所有数据,而不是一条错误消息,指出一个 id 无法解析。
相关选择:
SELECT *
FROM dbo.Daily dd
INNER JOIN dbo.Member m ON m.MemberId = dd.MemberID
INNER JOIN OPENXML(@hdoc, 'list_of_guids/id/text()', 1) with (guid uniqueidentifier '.') x
ON x.guid = m.MemberGuid
示例 XML,请注意最后一个条目无效:
<list_of_guids>
<guid>7B8CFAED-8C59-431D-9447-2A45BD4612E5</guid>
<guid>537F4129-0732-4D29-B3B8-4B9127F8522F</guid>
<guid>9965395A-676F-48F2-91CC-F46527D134C</guid>
</list_of_guids>
一种可能性是将 uniqueidentifiers 转换为 varchar 而不是相反,但这会导致性能影响,因为 uniqueidentifier 是成员表上的索引。