SQL Server 2005 para XML explícito: necesita ayuda para formatear

votos
8

Tengo una tabla con una estructura como la siguiente:

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

Para pasar a otro procedimiento almacenado, necesito que el XML se vea así:

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

Lo mejor que he podido hacer hasta ahora fue conseguirlo así:

<root clientID=10705/>

Estoy usando esta declaración SQL:

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

Hasta ahora, he visto la documentación en la página de MSDN , pero no he obtenido los resultados deseados.


@KG,

El tuyo me dio esta salida en realidad:

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

Voy a seguir con el FOR XML EXPLICITde Chris Leon por ahora.

Publicado el 05/08/2008 a las 21:35
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
1

tratar

SELECT
    1 AS Tag,
    0 AS Parent,
    AccountNumber AS [Root!1!AccountNumber!element]
FROM
    Location.LocationMDAccount
WHERE
    LocationID = 'long-guid-here'
FOR XML EXPLICIT
Respondida el 05/08/2008 a las 21:51
fuente por usuario

votos
0
SELECT 1 como etiqueta,
       null como padres,
       ACCOUNTNUMBER como 'ClientId! 1 !! elemento'
DE Location.LocationMDAccount
DONDE LocationID = 'a largo guid-aquí'
FOR XML EXPLICIT, raíz ( 'root')
Respondida el 31/10/2011 a las 12:28
fuente por usuario

votos
0

Utilizando SQL Server 2005 (o presumiblemente 2008) encuentro que XML PATH permite mucho más fácil mantener SQL que XML explícito (particularmente una vez que el SQL es más largo).

En este caso:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
Respondida el 17/08/2008 a las 07:45
fuente por usuario

votos
0

Lo tengo 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
Respondida el 05/08/2008 a las 21:53
fuente por usuario

votos
0

Prueba esto, Chris:

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

¡LO SIENTO MUCHO! Mezclé lo que estabas pidiendo. Prefiero el XML AUTO solo por la facilidad de mantenimiento, pero creo que cualquiera de los dos es efectivo. Mis disculpas por el descuido ;-)

Respondida el 05/08/2008 a las 21:53
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more