Na dica em http://www.bufaloinfo.com.br/dicas.asp?cod=306 foi mostrado com realizar esse truque utilizando dados em XML e a instrução OpenXML.
Porém, a partir do SQL Server 2005 ficou bem mais simples de realizar esta tarefa com os recursos específicos de manipulação de XML existentes no SQL Server.
Veja um exemplo :
declare @xml xml
select @xml='<clientes>
<cliente><customerid>ALFKI</customerid></cliente>
<cliente><customerid>ANATR</customerid></cliente>
<cliente><customerid>ANTON</customerid></cliente>
</clientes>'SELECT
clientes.cliente.value('customerid[1]','nvarchar(30)')
As Customerid
FROM
@xml.nodes('/clientes/cliente') clientes(cliente)
O método nodes na variável do tipo XML nos permite acessar os elementos do XML como sendo uma tabela. No caso o nome da tabela, para esta query, fica sendo "clientes" e o campo XML retornado pelo nodes fica sendo "cliente". Então cada cliente se torna um registro.
Na lista de campos, temos o campo cliente, xml, sobre o qual podemos utilizar o método value para extrairmos a informação que desejamos, sabendo que neste ponto já estamos lidando com apenas um cliente, que foi separado pelo método nodes. Na XQuery ainda precisamos indexar o elemento que desejamos, mas nesse caso o indice será sempre [1]
Desta forma podemos passar um XML para nossa stored procedure e a procedure poderá retirar do XML os dados de que necessita.
Compare preços de Livros de SQL Server no Já Cotei
Que tal visitar nossa loja de livros e analisar alguns Livros sobre SQL Server ?













0 comentários:
Postar um comentário