0

テーブル「名前」があるとしましょう:

ID    Name    Surname
1     Matt    Smith
2     John    Doe

これを生成するには、SQLXML をどのように記述しますか。

<people>
  <person>
    <name>Matt</name>
    <surname>Smith</surname>
  <person>
  <person>
    <name>John</name>
    <surname>Doe</surname>
  <person>
</people>

私が持っている最高のものはこれです:

select r.value('Name[1]', 'nvarchar(10)'), r.value('Surname[1]', 'nvarchar(10)')
from Names
for xml path('people')

それは私に与えます:

<people>
  <name>Matt</name>
  <surname>Smith</surname>
</people>
<people>
  <name>John</name>
  <surname>Doe</surname>
</people>

要するに、どうやって全体をラップするのですか?

4

2 に答える 2

2

これを試して:

SELECT 
   Name,
   Surname
FROM 
   dbo.Names
FOR XML PATH('person'), ROOT('people')

FOR XML PATH個々の行を囲むタグを定義し、FOR XML ... ROOT行のコレクションを囲むルート要素を定義します。

于 2010-07-06T07:43:44.427 に答える
0

これをすべてxmlの方法で行いたい場合は、

変数を持つことができます。

Declare @XMLOP xml
SET @XMLOP  = '<people></people>'

set @XMLOP.modify('       
insert (select r.value('Name[1]', 'nvarchar(10)'), r.value('Surname[1]', 'nvarchar(10)') 
        from Names 
        for xml path('Person'))
after (/people)[1]       
');

SELECT @XMLOP;
于 2010-07-06T07:43:33.763 に答える