sábado, 17 de julho de 2010

Introdução ao tipo de Dados XML - Parte 1

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')}

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

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:

Unknown disse...

e uma grande quantidade de registros na tabela temporária? vai afetar alguma coisa no processo de gerar o XML?

Postar um comentário