Pergunta

Eu tenho uma tabela com uma estrutura como a seguinte:

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

Para passar para outro procedimento armazenado, eu preciso de XML para olhar como este:

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

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

<root clientID="10705"/>

Eu estou usando esta instrução de 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 a documentação em a página da MSDN, mas eu já não saiu com os resultados desejados.


@KG,

O seu me deu essa saída, na verdade:

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

Eu estou indo para ficar com a FOR XML EXPLICIT a partir de Chris, Leon, por agora.

Foi útil?

Solução

tente

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

Outras dicas

Tente isso, Chris:

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

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

Usando o SQL Server 2005 (ou, presumivelmente, de 2008) eu encontrar para XML CAMINHO para permitir muito mais fácil de manter SQL que para XML Explícito (especialmente uma vez que o SQL é mais).

Neste caso:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');

Eu tenho-o 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
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')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top