Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma consulta SELECT retorna resultados como um conjunto de linhas. Opcionalmente, você pode recuperar resultados formais de uma consulta SQL como XML especificando a cláusula FOR XML na consulta. A cláusula FOR XML pode ser usada em consultas de nível superior e em subconsultas. A cláusula FOR XML de nível superior só pode ser usada na instrução SELECT. Em subconsultas, FOR XML pode ser usado nas instruções INSERT, UPDATE e DELETE. Ele também pode ser usado em instruções de atribuição.
Em uma cláusula FOR XML, você especifica um destes modos:
CRU
AUTOMÁTICO
EXPLÍCITO
Caminho
O modo RAW gera um único <elemento de linha> por linha no conjunto de linhas retornado pela instrução SELECT. Você pode gerar hierarquia XML escrevendo consultas FOR XML aninhadas.
O modo AUTO gera aninhamento no XML resultante usando heurística com base na maneira como a instrução SELECT é especificada. Você tem controle mínimo sobre a forma do XML gerado. Consultas FOR XML aninhadas podem ser escritas para gerar uma hierarquia XML que vai além da estrutura XML criada pelas heurísticas do modo AUTO.
O modo EXPLICIT permite mais controle sobre a forma do XML. Você pode misturar atributos e elementos à vontade na decisão da forma do XML. Ele requer um formato específico para o conjunto de linhas resultante que é gerado devido à execução da consulta. Esse formato de conjunto de linhas é mapeado para a forma XML. O poder do modo EXPLICIT está em misturar atributos e elementos à vontade, criar envoltórios e propriedades complexas aninhadas, criar valores separados por espaço (por exemplo, o atributo OrderID pode conter uma lista de valores de IDs de pedido) e conteúdos mistos.
No entanto, escrever consultas no modo EXPLICIT pode ser complicado. Você pode utilizar alguns dos novos recursos e capacidades FOR XML, como a escrita de consultas aninhadas nos modos FOR XML RAW/AUTO/PATH e a diretiva TYPE, ao invés de utilizar o modo EXPLICIT para gerar as hierarquias. As consultas FOR XML aninhadas podem produzir qualquer XML que você possa gerar usando o modo EXPLICIT. Para obter mais informações, consulte Usar consultas FOR XML aninhadas e diretiva TYPE em consultas FOR XML.
O modo PATH junto com a funcionalidade de consulta FOR XML aninhada fornece a flexibilidade do modo EXPLICIT de maneira mais simples.
Esses modos estão em vigor apenas para a execução da consulta para a qual estão definidos. Elas não afetam os resultados de consultas subsequentes.
FOR XML não é válido para qualquer seleção usada com uma cláusula FOR BROWSE.
Exemplo
A instrução a seguir SELECT recupera informações das tabelas AdventureWorks2012 e Sales.SalesOrderHeader do Sales.Customer banco de dados. Essa consulta especifica o AUTO modo na FOR XML cláusula:
USE AdventureWorks2012
GO
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.Status
FROM Sales.Customer Cust
INNER JOIN Sales.SalesOrderHeader OrderHeader
ON Cust.CustomerID = OrderHeader.CustomerID
FOR XML AUTO
A cláusula FOR XML e os nomes do servidor
Quando uma instrução SELECT com uma cláusula FOR XML especifica um nome de quatro partes na consulta, o nome do servidor não é retornado no documento XML resultante quando a consulta é executada no computador local. No entanto, o nome do servidor é retornado como o nome de quatro partes quando a consulta é executada em um servidor de rede.
Por exemplo, considere esta consulta:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2012.Person.Person
FOR XML AUTO
Quando ServerName é um servidor local, a consulta retorna o seguinte:
<AdventureWorks2012.Person.Person LastName="Achong" />
Quando ServerName é um servidor de rede, a consulta retorna o seguinte:
<ServerName.AdventureWorks2012.Person.Person LastName="Achong" />
Essa ambiguidade potencial pode ser evitada especificando este alias:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2012.Person.Person x
FOR XML AUTO
Essa consulta retorna o seguinte:
<x LastName="Achong"/>
Consulte Também
Sintaxe básica da cláusula FOR XML
Usar o modo RAW com FOR XML
Usar o modo AUTO com FOR XML
Utilize o modo EXPLICIT com FOR XML
Usar o modo PATH com FOR XML
OPENXML (SQL Server)
Adicionar namespaces a consultas com WITH XMLNAMESPACES