requete - sql server xml value




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

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 vous demandiez. Je préfère le XML AUTO juste pour la facilité de maintenance, mais je crois que l'un est efficace. Mes excuses pour l'oubli ;-)

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 du XML pour ressembler à ceci:

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

Le mieux que j'ai pu faire jusqu'ici était de le faire 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 regardé la documentation sur la page MSDN , mais je ne suis pas sorti avec les résultats souhaités.

@KG,

Le vôtre m'a donné cette sortie en réalité:

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

Je vais m'en tenir au FOR XML EXPLICIT de Chris Leon pour le moment.


À l'aide de SQL Server 2005 (ou vraisemblablement de 2008), je trouve que XML PATH permet de maintenir beaucoup plus facilement SQL que XML Explicit (en particulier lorsque 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');

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')

essayer

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




for-xml