Formatando Saída XML no SQL Server 2005: Um Guia para FOR XML EXPLICIT

Ao trabalhar com SQL Server, você pode encontrar cenários nos quais precisa transformar os resultados da sua consulta em formato XML. Um desafio comum surge ao tentar alcançar uma estrutura XML específica. Por exemplo, pode ser necessário passar a saída para outro procedimento armazenado, mantendo um certo formato. Neste post do blog, vamos explorar como formatar a saída XML corretamente no SQL Server 2005 usando a cláusula FOR XML EXPLICIT.

O Problema: Estrutura XML Desejada

Vamos começar analisando o problema. Considere uma tabela com a estrutura ilustrada abaixo:

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

Para passar a saída como XML para outro procedimento armazenado, você precisa que o formato XML se pareça com isso:

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

No entanto, sua tentativa inicial gerou este resultado:

<root clientID="10705"/>

Claramente, você não está obtendo a saída desejada. Vamos resolver isso.

A Solução: Desmembrando a Consulta SQL

Para alcançar o formato XML desejado, você precisa ajustar sua consulta SQL. Aqui está um guia passo a passo para chegar à saída esperada.

Passo 1: Modifique a Consulta SQL

Sua consulta SQL inicial precisa de algumas alterações. Substitua-a pela seguinte instrução:

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

Passo 2: Entendendo os Componentes da Consulta

  • Instrução SELECT: Você começa selecionando os dados desejados, neste caso, AccountNumber.
  • Tag e Parent: Os valores Tag e Parent são essenciais para estruturar corretamente a hierarquia XML. Aqui, 1 e 0 são usados para indicar o nível raiz.
  • Especificação do Formato XML: O AS [Root!1!AccountNumber!element] é crítico. Ele visa gerar elementos XML para cada AccountNumber.

Passo 3: Executando a Consulta

Execute a consulta SQL modificada no seu banco de dados SQL Server. Se tudo correr como planejado, agora você deve receber a saída XML estruturada corretamente, parecendo com isto:

<root>
    <AccountNumber>12345</AccountNumber>
    <AccountNumber>54321</AccountNumber>
</root>

Conclusão

Alcançar o formato XML desejado pode ser simples com as consultas SQL corretas. A cláusula FOR XML EXPLICIT no SQL Server 2005 permite controle detalhado sobre como seus dados são transformados em XML. Ao ajustar sua consulta para incluir os componentes corretos de Tag, Parent e formatação, você pode formatar com sucesso sua saída XML para atender às suas necessidades.

Se você seguir os passos descritos neste post do blog, agora deverá ser capaz de formatar sua saída do SQL Server 2005 na estrutura XML que precisa. Boas consultas!