Compartilhar via


Gerar XML de conjuntos de linhas com FOR XML

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

É possível gerar uma instância de tipo de dados xml por meio de um conjunto de linhas usando FOR XML com a nova diretiva TYPE .

O resultado pode ser atribuído a uma coluna, variável ou parâmetro de tipo de dados xml . Além disso, o FOR XML pode ser aninhado para gerar qualquer estrutura hierárquica. Isso torna o FOR XML aninhado muito mais conveniente de escrever do que o FOR XML EXPLICIT, mas ele pode não executar tão bem para hierarquias profundas. O FOR XML também introduz um modo de PATH novo. Esse novo modo especifica o caminho na árvore XML onde o valor de uma coluna aparece.

A nova diretiva FOR XML TYPE pode ser usada para definir exibições XML de somente leitura sobre dados relacionais com sintaxe SQL. A exibição pode ser consultada com instruções SQL e XQuery inserido, conforme mostrado no exemplo a seguir. Também é possível fazer referência a essas exibições SQL em procedimentos armazenados.

Exemplo: modo SQL que retorna o tipo de dados xml gerado

A definição da exibição SQL a seguir cria uma exibição XML sobre uma coluna relacional, pk, e autores de livros recuperados de uma coluna XML:

CREATE VIEW V (xmlVal) AS
SELECT pk, xCol.query('/book/author')
FROM   T
FOR XML AUTO, TYPE;

A exibição V contém uma única linha com uma única columnxmlVal de tipo XML. Ela pode ser consultada como uma instância de tipo de dados xml . Por exemplo, a consulta a seguir retorna o autor cujo primeiro nome é "David":

SELECT xmlVal.query('//author[first-name = "David"]')
FROM   V;

As definições de modo SQL são semelhantes às exibições XML que são criadas usando esquemas anotados. No entanto há diferenças importantes. A definição da exibição SQL é somente leitura e deve ser manipulada com XQuery inserido. As exibições XML são criadas usando esquema anotado. Além disso, a exibição SQL materializa o resultado XML antes de aplicar a expressão XQuery, enquanto as consultas XPath nas exibições XML avaliam consultas SQL nas tabelas subjacentes.

Confira também