Question

J'ai une table avec une structure comme suit:

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

Pour passer dans une autre procédure stockée, j'ai besoin de l'XML pour ressembler à ceci:

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

Le meilleur que j'ai pu faire jusqu'à présent été l'obtention comme ceci:

<root clientID="10705"/>

Je suis l'aide de cette instruction SQL:

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

Jusqu'à présent, j'ai regardé la documentation sur la page MSDN, mais je n'ai pas de sortir avec les résultats souhaités.


@KG,

Le vôtre m'a donné cette sortie fait:

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

Je vais rester avec le FOR XML EXPLICIT de Chris Leon pour l'instant.

Était-ce utile?

La solution

essayez

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

Autres conseils

Essayez ceci, Chris:

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

TERRIBLEMENT DÉSOLÉ!J'ai mélangé jusqu'à ce que vous demandez.Je préfère le XML AUTO simplement pour la facilité d'entretien, mais je crois que soit on est efficace.Mes excuses pour la surveillance ;-)

À l'aide de SQL Server 2005 (ou vraisemblablement 2008) je trouve que pour XML PATH pour permettre beaucoup plus facile à maintenir SQL que for XML Explicit (en particulier une fois que le SQL est plus long).

Dans ce cas:

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

Je l'ai eu avec:

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')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top