Usando XML – A Cláusula FOR XML e o Modo AUTO

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Veja neste artigo o detalhamento do uso do modo AUTO.

 

por Jerônimo Jardel Vogt

Este artigo faz parte da série de artigos sobre a cláusula de consulta FOR XML, suportada pelo SQL Server 2005 e usada para retornar os dados do banco de dados em formato XML. No artigo anterior, introduzimos a cláusula FOR XML, vimos a estrutura sintática do comando, uma breve descrição dos diferentes modos de retorno XML (RAW, AUTO, EXPLICIT e PATH), e alguns exemplos práticos do uso do modo RAW. Neste artigo continuaremos o estudo da cláusula FOR XML, detalhando o uso do modo AUTO.

O que é o modo de consulta AUTO

O modo de consulta AUTO produz uma representação XML das entidades envolvidas na cláusula de consulta. Considere os seguintes recursos do modo AUTO:

F    Cada linha retornada pela consulta é representada como um elemento XML com o mesmo nome da tabela de origem, ou o alias usado na consulta.

F    Cada JOIN da consulta resulta em um elemento XML aninhado, reduzindo a duplicação de dados. A ordem do JOIN afeta a ordem dos elementos.

F    Use a cláusula ORDER BY para retornar os dados na ordem hierárquica correta, garantindo assim que os elementos filhos estejam agrupados corretamente a um elemento pai.

F    Cada coluna é representada por um atributo, desde que a opção ELEMENTS não seja especificada, e neste caso cada coluna é representada por um elemento filho.

F    Colunas agregadas e cláusulas GROUP BY não são suportadas no modo AUTO, entretanto você usar o modo AUTO para retornar dados agregados de uma view que use a cláusula GROUP BY.

O exemplo abaixo mostra como você pode usar o modo de consulta AUTO para retornar um fragmento XML de uma lista de pedidos.

 

SELECT Cust.CustomerID CustID, CustomerType, SalesOrderID

FROM Sales.Customer Cust

  INNER JOIN Sales.SalesOrderHeader [Order]

  ON Cust.CustomerID = [Order].CustomerID

ORDER BY Cust.CustomerID

FOR XML AUTO

 

Esta consulta produz um fragmento XML no seguinte formato.


jerônimo-02-03pic03.JPG

Como podemos ver, a coluna CustomerID e as tabelas Customer e SalesOrderHeader fazem uso de alias para determinar os nomes do atributo e do elemento.

O exemplo abaixo mostra como retornar os mesmos dados como elementos ao invés de atributos usando a opção ELEMENTS.

 

SELECT Cust.CustomerID CustID, CustomerType, SalesOrderID

FROM Sales.Customer Cust

  INNER JOIN Sales.SalesOrderHeader [Order]

  ON Cust.CustomerID = [Order].CustomerID

ORDER BY Cust.CustomerID

FOR XML AUTO, ELEMENTS

 

Esta consulta produz um fragmento XML no seguinte formato.


jerônimo-02-03pic02.JPG

Você também pode usar a opção ROOT, como mostrado no exemplo abaixo.

 

SELECT Cust.CustomerID CustID, CustomerType, SalesOrderID

FROM Sales.Customer Cust

  INNER JOIN Sales.SalesOrderHeader [Order]

  ON Cust.CustomerID = [Order].CustomerID

ORDER BY Cust.CustomerID

FOR XML AUTO, ELEMENTS, ROOT(‘Orders’)

 

Esta consulta produz um fragmento XML no seguinte formato.


jerônimo-02-03.JPG

No próximo artigo veremos o modo de consulta FOR XML EXPLICIT, uma opção que dá ao desenvolvedor maior flexibilidade e controle na geração de documentos XML. Um grande abraço e até lá.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?