Definição
O tipo de dado XML permite que o conteúdo de um arquivo estruturado com formato XML seja armazenado em uma variável ou coluna do banco de dados.
Versões do SQL Server
O tipo de dados XML foi umas das novidades introduzidas no SQL Server 2005. Até a versão 2000 do SQL Server, era possível armazenar o conteúdo de um arquivo XML em uma tabela através de colunas do tipo text e ntext, porém não era possível utilizar os benefícios da estrutura hierárquica do arquivo, uma vez que este era armazenada como texto puro.
Vantagens
Este tipo especial de dados permite que o conteúdo de um arquivo XML seja armazenado de forma que sua estrutura hierárquica seja padronizada através de um Schema e consultada através de XQuery.
Assim, em uma tabela com colunas deste tipo, pode-se criar queries onde o filtro (cláusula WHERE) realize comparações com nós da árvore XML.
XML Tipado e XML Não-tipado
O SQL Server possibilita a definição de Schemas para controlar os campos XML, isto é, ao definir um schema para um campo, cria-se uma regra para a estrutura do XML a ser armazenado por ele. Sendo assim, apenas os arquivos ou trechos de arquivos que obedeçam a estrutura definida poderão ser inseridos na tabela.
Variáveis XML
Assim como os tipos comuns de dados do SQL Server, o tipo XML possibilita a criação de variáveis deste tipo. O comando abaixo mostra como criar uma variável deste tipo:
DECLARE @varXML XML
A cláusula FOR XML
Caso seja necessário retornar os dados de uma consulta ou mesmo trabalhá-los utilizando o formato XML, pode-se facilmente convertê-lo para esta estrutura através a cláusula FOR XML.
Pode-se aplicar o FOR XML ao resultado de uma consulta da seguinte forma:
SELECT campo1, campo2
FROM Tabela
WHERE campo2 = const
FOR XML {AUTO | RAW('NomeDoElemento')}
FROM Tabela
WHERE campo2 = const
FOR XML {AUTO | RAW('NomeDoElemento')}
Exemplo básico utilizando variável XML e comando FOR XML
-- Criando e populando tabela temporária com dados de pessoas
CREATE TABLE #Pessoa (id int identity(1,1), nome varchar(100), sexo VARCHAR(1))
INSERT INTO #Pessoa VALUES ('Evandro','M'),('Ricardo','M'),('Márcio','M'),('Mariana','F'),('Patrícia','F'),('José','M')
-- Definindo variável do tipo XML
DECLARE @varXML XML
-- Utilizando o comando FOR XML para converter o resultado da consulta em um XML
SELECT @varXML =
(SELECT
id,nome,sexo
FROM
#Pessoa
ORDER BY
nome
FOR XML RAW('Pessoa'))
-- Exibindo o conteúdo da variável XML
select @varXML as XML
-- Apagando a tabela temporária
DROP TABLE #Pessoa
CREATE TABLE #Pessoa (id int identity(1,1), nome varchar(100), sexo VARCHAR(1))
INSERT INTO #Pessoa VALUES ('Evandro','M'),('Ricardo','M'),('Márcio','M'),('Mariana','F'),('Patrícia','F'),('José','M')
-- Definindo variável do tipo XML
DECLARE @varXML XML
-- Utilizando o comando FOR XML para converter o resultado da consulta em um XML
SELECT @varXML =
(SELECT
id,nome,sexo
FROM
#Pessoa
ORDER BY
nome
FOR XML RAW('Pessoa'))
-- Exibindo o conteúdo da variável XML
select @varXML as XML
-- Apagando a tabela temporária
DROP TABLE #Pessoa
Ao executar o script, obtém-se o seguinte resultado:
Ao clicar no link do resultado da consulta, pode-se acessar o conteúdo XML retornado:
O XML gerado pode ser utilizado nos processamentos subsequentes ou utilizado para retornar dados a uma aplicação.
Aguarde! Nos próximos artigos falaremos sobre Schemas em XML estruturados e teremos dicas sobre o uso de variáveis e parâmetros XML.
Um comentário:
e uma grande quantidade de registros na tabela temporária? vai afetar alguma coisa no processo de gerar o XML?
Postar um comentário