2008-08-05 11 views
8

que tiene una mesa con una estructura como la siguiente:SQL Server 2005 Para XML explícito - Necesita ayuda formato

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

Para pasar a otro procedimiento almacenado, necesito el código XML a tener este aspecto:

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

La mejor que he podido hacer hasta ahora estaba recibiendo de esta manera:

<root clientID="10705"/> 

estoy usando este SQL s esultados:

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 mirado en la documentación sobre the MSDN page, pero no hemos llegado a cabo con los resultados deseados.


@KG,

Suyo me dieron esta salida realidad:

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

voy a seguir con el FOR XML EXPLICIT de Chris Leon por ahora.

Respuesta

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 
0

probar esto, Chris:

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

muchísimo! 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 la supervisión ;-)

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 
0

Uso de SQL Server 2005 (o, presumiblemente, 2008) Encuentro de PATH XML para permitir mucho más fácil de mantener que para SQL XML explícita (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'); 
0
 
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') 
Cuestiones relacionadas