SQL Server 2005 pour XML explicite - Besoin d'aide pour le formatage

J'ai une table avec une structure comme celle-ci :

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

Pour passer à une autre procédure stockée, j'ai besoin que le XML ressemble à ceci :

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

Le mieux que j'ai pu faire jusqu'à présent a été de l'obtenir comme ceci :

<root clientID='10705'/>

J'utilise 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 consulté la documentation sur la page MSDN, mais je n'ai pas obtenu les résultats escomptés.

@KG,

Votre m'a donné cette sortie en fait :

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

Je vais m'en tenir au FOR XML EXPLICIT de Chris Leon pour l'instant.

请先 登录 后评论

3 réponses

Chris Leon

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
请先 登录 后评论
karlgrz

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é ce que tu demandais. Je préfère le XML AUTO juste pour la facilité de maintenance, mais je pense que l'un ou l'autre est efficace. Toutes mes excuses pour l'oubli ;-)

请先 登录 后评论
Chris Benard

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
请先 登录 后评论