tabla - SQL Server 2005 para XML explícito: necesita ayuda para formatear
queryout sql server (5)
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 FOR XML EXPLICIT
de Chris Leon por ahora.
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 ;-)
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'');
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
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'')
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