Revista MSDN Magazine Edição 23 - XML no SQL Server 2000
Neste artigo, discutiremos como poderemos retornar XML do SQL Server através da cláusula T-SQLs XML.
XML no SQL Server 2000<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
· Uso de XML no SQL Server 2000
· Manipulação de Dataset via XML
· Uso de Stored Procedures
Stored Procedures, XML e SQL
DataPoints0506.exe (152KB)
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).
Cada registro no rowset é transformado num elemento XML chamado row. Os elementos contêm um atributo que representa cada coluna que foi recuperada.
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.
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:
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: