SQL Server 2005 para XML explícita - Precisa de ajuda formatação

votos
8

Eu tenho uma tabela com uma estrutura como o seguinte:

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

Para passar para outro procedimento armazenado, eu preciso do XML para ficar assim:

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

O melhor que eu tenho sido capaz de fazer até agora estava ficando assim:

<root clientID=10705/>

Eu estou usando esta instrução SQL:

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

Até agora, eu olhei para a documentação sobre a página do MSDN , mas eu não sair com os resultados desejados.


@KG,

Teu me deu esta saída, na verdade:

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

Vou ficar com o FOR XML EXPLICITde Chris Leon para agora.

Publicado 05/08/2008 em 21:35
fonte usuário
Em outras línguas...                            


5 respostas

votos
1

experimentar

SELECT
    1 AS Tag,
    0 AS Parent,
    AccountNumber AS [Root!1!AccountNumber!element]
FROM
    Location.LocationMDAccount
WHERE
    LocationID = 'long-guid-here'
FOR XML EXPLICIT
Respondeu 05/08/2008 em 21:51
fonte usuário

votos
0
SELECT 1 como tag,
       null como pai,
       AccountNumber como 'clientID! 1 !! elemento'
DE Location.LocationMDAccount
ONDE LocationID = 'long-guid-aqui'
FOR XML EXPLICIT, raiz ( 'root')
Respondeu 31/10/2011 em 12:28
fonte usuário

votos
0

Usando o SQL Server 2005 (ou, presumivelmente, 2008) I encontrar para PATH XML para permitir muito mais fácil manter SQL do que para XML explícita (em particular uma vez que o SQL é mais longo).

Nesse caso:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
Respondeu 17/08/2008 em 07:45
fonte usuário

votos
0

Eu tenho-lo com:

select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
Respondeu 05/08/2008 em 21:53
fonte usuário

votos
0

Tente isto, Chris:

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

TERRIVELMENTE ARREPENDIDO! Eu misturei o que você estava pedindo. Eu prefiro o AUTO XML apenas para facilidade de manutenção, mas acredito que qualquer um é eficaz. As minhas desculpas para a supervisão ;-)

Respondeu 05/08/2008 em 21:53
fonte usuário

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