XMLを介して一意の識別子のリストを受け取るストアドプロシージャがあります。1つ以上の文字列が有効なuniqueidentifierではない可能性があります。SQLServerはこの変換時に例外をスローし、プロシージャ全体が中止されます。
これらのエラーを抑制して続行することは可能ですか?1つを除くすべてのIDが有効な場合、1つの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>
1つの可能性は、uniqueidentifiersをその逆ではなくvarcharに変換することですが、uniqueidentifierはメンバーテーブルのインデックスであるため、パフォーマンスに影響を与えます。