msdn23_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

XML no SQL Server 2000

por John Papa

Este artigo discute

Este artigo usa as seguintes tecnologias:

·          Uso de XML no SQL Server 2000

·          Manipulação de Dataset via XML

·          Uso de Stored Procedures

Stored Procedures, XML e SQL

 

Download:

DataPoints0506.exe (152KB)

Chapéu

XML no SQL Server

 

 

 

O SQL Server™ 2000 inclui várias características XML que permitem transformar rowsets relacionais para documentos XML hierárquicos, ler documentos XML, e fazer carga massiva de dados via XML. Por exemplo, podemos passar um documento XML para uma stored procedure, fazer join XML com algumas tabelas e retornar um rowset ou mesmo modificar dados no Database. A inclusão da função OPENXML e a declaração FOR XML tem sido instigada pela constante expansão do papel do XML nos atuais sistemas empresariais. Algumas destas características não só suportam o XML como também oferecem melhor desempenho para a carga de grandes volumes de dados.

Neste artigo, discutiremos como poderemos retornar XML do SQL Server através da cláusula T-SQL's XML. Veremos exemplos que mostram os vários modos para retornar dados XML e informações de schema, e mostraremos como transformar o XML para um formato mais inteligível. A seguir, abordaremos o OPENXML, como fazer um join de um documento XML com tabelas de banco de dados e como extrair XML de um DataSet usando os métodos WriteXml e GetXml. O código SQL e um exemplo de projeto ASP.NET encontram-se no download disponível no Web site da MSDN®Magazine. O projeto exemplo também inclui o código para inserir e atualizar os registros no banco de dados XML.

Retornando XML

Quando usado em uma declaração SELECT, a cláusula XML informa ao SQL Server o retorno dos dados na forma de documento XML, em lugar de um rowset padrão. Podemos especificar o modo como: RAW, AUTO ou EXPLICIT. Cada um provê uma forma diferente de transformar o XML (a Tabela 1 mostra uma visão geral de cada modo).

 

Mode

Description

RAW

Cada registro no rowset é transformado num elemento XML chamado row. Os elementos contêm um atributo que representa cada coluna que foi recuperada.

AUTO

Registros no rowset podem ser transformados em elementos XML aninhados nomeados na cláusula FROM, após as tabelas. Cada coluna que for recuperada será representada como um atributo.

EXPLICIT

Temos grande controle sobre como o XML será formatado. No entanto, a sintaxe para o uso do modo EXPLICIT é bem mais complexa. O XSTL e uma prática mais comum e mais aceita para transformação de XML.

Tabela 1 – Visão Geral dos Modos XML

 

Por exemplo, se examinarmos a tabela Employees do banco de dados Northwind, o uso do XML RAW, retornaria cada linha de empregado dentro um elemento . Cada coluna que incluímos na declaração SELECT seria representada como um atributo no elemento . A seguinte query XML RAW, seleciona dois registros de empregado e os retorna no formato RAW:

 

SELECT EmployeeID,

    FirstName, LastName

FROM Employees

WHERE LastName LIKE 'D%'

FOR XML RAW

 

A mesma declaração SELECT poderia ser modificada para usar também a cláusula FOR XML AUTO. Agora, os elementos são Employees nomeados, seguidos com o nome da tabela fonte. As colunas de saída são atributos dos elementos principais:

 

SELECT EmployeeID, FirstName, LastName

FROM Employees

WHERE LastName LIKE 'D%'

FOR XML AUTO

...

Quer ler esse conteúdo completo? Tenha acesso completo