سؤال

لنقول أن لدينا جدول "أسماء":

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>

باختصار ، كيف يمكنني لف كلها؟

هل كانت مفيدة؟

المحلول

جرب هذا:

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

ال FOR XML PATH يحدد العلامة لتطويق كل صف فردي ، بينما FOR XML ... ROOT يحدد عنصر الجذر المحيط بجمع الصفوف.

نصائح أخرى

إذا كنت تريد أن تفعل هذا بطريقة 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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top