3

以下のこの声明:

SELECT
    ....
FROM
    ....
WHERE
    ....
FOR XML PATH('Booking'), ROOT('doc')

これにより、すべてのレコードが 1 つの XML 文字列で返されます。各レコードに独自の XML 文字列が必要です。これは理にかなっていますか?出来ますか。これを行うのは理にかなっていますか?

Microsoft SQL Server 2008 を使用しています

4

1 に答える 1

1

私の理解が正しければ、各行で個別の XML ドキュメントを生成する必要があります (「XML 文字列」などはありません)。FOR XML を介して各行実行する必要があります。たとえば、テーブルから各行を取得し、CROSS APPLY演算子を使用して単一の行を射影しFOR XML TYPEます。結合には行テーブル値コンストラクターを使用します。例えば。master..spt_values を使用:

select t.*
 from master..spt_values s
 cross apply (
 select s.* 
 from (values (1) ) as t(c) 
 for xml path('Boookin'), root('Doc'), type) as t(x)

次のような構造を持つ、行ごとに 1 つの XML ドキュメントを返します。

<Doc>
  <Boookin>
    <name>rpc</name>
    <number>1</number>
    <type>A  </type>
    <status>0</status>
  </Boookin>
</Doc>

master..spt_values を選択したテーブルに置き換えます。

于 2010-08-17T05:52:36.707 に答える