0

SQL Server 2008 で実行しています。列の型 varchar を選択し、すべての値を XML 型に変換しています。ただし、varchar 値が常に正しい XML 形式であるとは限りません。正しい XML 形式でない場合は、「エラー」を出力して続行する必要があります。問題は、変換エラーの処理方法がわからないことです。私の選択の周りにTRY-CATCHを使用しようとしましたが、エラーが発生すると選択が停止します。varchar から XML への変換が機能するかどうかを確認する関数を作成することに頼りました。変換でエラーが発生した場合は関数が null を返す必要があります。どうすればいいですか?

これは、変換しようとしているデータの非常に単純化されたバージョンです

select dbo.isxml(val)

from (VALUES
('<\fewafeawf'), 
('<XML><STUFF DATA="TEST" /></XML>'),
('<XML>efaweff'))  X(val)

これが私が今持っている機能です。変換が失敗した場合に null を返すように調整する方法がわかりません

create function dbo.isxml(@NT varchar(max)) returns xml
as
begin

declare @output xml

set @output  = cast(@NT as xml)

return @output

end
go

私が望む出力は

NULL
<XML><STUFF DATA="TEST" /></XML>'
NULL

TRY-CONVERT 関数を使用してみましたが、それは SQL Server 2012 用です。関数で TRY-CATCH ステートメントを使用してみましたが、UDF 関数で TRY-CATCH ステートメントを使用できません。プロシージャ内でプロシージャと try-catch を使用することを考えましたが、実際には更新や挿入を行っていないため、この状況でプロシージャを使用する必要があるとは思えません。これを処理する方法がわからない。

どんな助けでも素晴らしいでしょう!ありがとうございました!

4

1 に答える 1