Domanda

Ho una tabella con una struttura simile alla seguente:

------------------------------
LocationID     | AccountNumber
------------------------------
long-guid-here | 12345
long-guid-here | 54321

Per passare in un'altra stored procedure, ho bisogno di XML simile a questo:

<root> 
    <clientID>12345</clientID>
    <clientID>54321</clientID>
</root>

Il meglio che ho potuto fare finora è stato sempre così:

<root clientID="10705"/>

Io sto usando questa istruzione SQL:

SELECT
    1 as tag,
    null as parent,
    AccountNumber as 'root!1!clientID'
FROM
    Location.LocationMDAccount
WHERE
    locationid = 'long-guid-here'
FOR XML EXPLICIT

Finora, ho guardato la documentazione la pagina di MSDN, ma non ho avuto modo di uscire con i risultati desiderati.


@KG,

Il vostro mi ha dato questa uscita, in realtà:

<root>
  <Location.LocationMDAccount>
    <clientId>10705</clientId>
  </Location.LocationMDAccount>
</root>

Ho intenzione di attaccare con la FOR XML EXPLICIT da Chris, Leon, per ora.

È stato utile?

Soluzione

provare

SELECT
    1 AS Tag,
    0 AS Parent,
    AccountNumber AS [Root!1!AccountNumber!element]
FROM
    Location.LocationMDAccount
WHERE
    LocationID = 'long-guid-here'
FOR XML EXPLICIT

Altri suggerimenti

Prova questo, Chris:

SELECT
    AccountNumber as [clientId]
FROM
    Location.Location root
WHERE
    LocationId = 'long-guid-here'
FOR
    XML AUTO, ELEMENTS

MI DISPIACE MOLTO!Ho mescolato ciò che mi chiedeva.Io preferisco l'XML AUTO solo per facilità di manutenzione, ma credo che uno di loro è efficace.Mi scuso per la svista ;-)

Utilizzo di SQL Server 2005 (o presumibilmente 2008) che ho trovato per XML PERCORSO per consentire una migliore e più semplice per mantenere SQL che per XML Esplicito (in particolare, una volta che l'SQL è più).

In questo caso:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');

Io ce l'ho con:

select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
SELECT 1             as tag,
       null          as parent,
       AccountNumber as 'clientID!1!!element'
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML EXPLICIT, root('root')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top