SQL Server 2005 For XML Explicit - Besoin d'aide pour mise en forme
-
08-06-2019 - |
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.
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')