SQL Server – “brincando” com XML

Bom dia!

Mais um post da série “brincando com SQL Server” :-D.

Ao salvar dados em um tabela com uma coluna do tipo XML, pode ser útil extrair dados de determinado caminho (path) para armazenamento em uma coluna (varchar ou int, por exemplo) para acelerar o acesso. Uma função de extração (uma UDF) que implementa este comportamento está descrita abaixo (com o help do Books Online do SQL Server!).

-- CRIACAO DE BANCO PARA TESTE
CREATE DATABASE TESTEDB
GO

USE TESTEDB
GO

-- FUNCAO QUE RETORNA O VALOR DO ATRIBUTO "ID" DO ELEMENTO "Element"
CREATE FUNCTION dbo.fnc_GetXML(@myXML xml)
RETURNS int
AS
BEGIN
 DECLARE @tmp int
 SET @tmp = @myXML.value('(/Root/Element/@ID)[1]', 'int')
 RETURN @tmp
END
GO

-- TESTE COM VARIAVEL
DECLARE @text xml
SET @text = '<Root><Element ID="100" /></Root>'
SELECT dbo.fnc_GetXML(@text)
GO

-- COLUNA CALCULADA
CREATE TABLE T_XML (
 ID as (dbo.fnc_GetXML(TextXML)),
 TextXML xml NOT NULL
)
GO

-- INSERIR VALORES
DECLARE @text xml
SET @text = '<Root><Element ID="1" /></Root>'
INSERT T_XML (TextXML) VALUES (@text)

SET @text = '<Root><Element ID="2" /></Root>'
INSERT T_XML (TextXML) VALUES (@text)
GO

-- CONSULTAR O QUE FOI INSERIDO (CALCULOS)
SELECT * FROM T_XML
GO

Quer saber mais?
http://www.microsoft.com/learning/en/us/course.aspx?ID=6232A! Um módulo inteiro de XML.

Até a próxima.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s