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

Veja neste artigo o detalhamento do uso do modo AUTO.

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

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:

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.

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.

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.

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á.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados