Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
306
Assunto : SQL Server
Titulo: Utilizando OpenXML para manipular dados em XML

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



A possibilidade de manipular documentos XML no SQL Server facilita muito o trabalho em ambientes distribuidos que fazem uso desta linguagem (XML) para transferência de dados, simplificando/otimizando algumas querys.

Digamos que temos uma interface na qual o usuário pode selecionar vários códigos de cliente, quantos desejar, para pesquisa-los no banco. Em uma query normal seria necessário montar a query através de concatenação de string.

Uma opção é enviar um documento XML contendo os IDs de cliente para o SQL Server e fazer uma query ligando a tabela com esse documento. Veja um exemplo do documento :

<clientes>
<customerid>ALFKI</customerid>
<customerid>ANATR</customerid>
<customerid>ANTON</customerid>
</clientes>

Podemos então utilizar o OpenXML para buscar na tabela customers todos os clientes cujo código encontra-se dentro deste XML. Veja um exemplo :

declare @xml varchar(200)
declare @iddoc int
select @xml='<clientes>
<cliente><customerid>ALFKI</customerid></cliente>
<cliente><customerid>ANATR</customerid></cliente>
<cliente><customerid>ANTON</customerid></cliente>
</clientes>'

EXEC sp_xml_preparedocument @iddoc OUTPUT, @xml

select * from customers where
customerid in
(select customerid from openxml(@iddoc,'/clientes/cliente',2)
WITH (customerid varchar(10)))

No exemplo acima, a colocação do XML em uma variável é apenas questão de exemplo, o XML poderia estar sendo recebido como parâmetro por uma procedure.

É necessário utilizar a procedure sp_xml_preparedocument, que utiliza o parser de XML para validar e interpretar o documento XML. Esta procedure gera uma representação interna do documento XML e retorna um ID para o acesso ao documento. Neste exemplo estamos guardando o ID na variavel @iddoc

Depois disso podemos utilizar a função OPENXML passando como parâmetro o @iddoc e uma string XPATH para determinar o nó que deverá ser lido do documento XML.

No exemplo, está sendo informado que o nó cliente abaixo do nó clientes representa um registro. Assim sendo cada nó cliente gerará dados para um registro do conjunto de dados retornado. O flag determina se os campos serão lidos de atributos (1) ou de elementos (2).

É ainda necessária a clausula with para determinar quais elementos/atributos serão transformados em campos do conjunto de dados de retorno. Lembre-se que o XML é case sensitive.

Desta forma conseguimos selecionar da tabela customers todos os clientes cujo código foi recebido no documento XML



Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 2/1/2017 2:38:00 AM
nome: xchnxZtrOAvKpTyb
email: derby451@hotmail.com
comentário:
2fE7Pm http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/31/2017 12:07:00 PM
nome: kjrBVdeBmciDZZcna
email: derby451@hotmail.com
comentário:
fp84D3 http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/30/2017 1:47:00 AM
nome: LEDkufpDGzGTmMIrEn
email: derby451@hotmail.com
comentário:
1f9eLy http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/30/2017 12:31:00 AM
nome: GSEmvfzSFZNubj
email: jogcbfn@hotmail.com
comentário:
CYhZDj http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 9:43:00 AM
nome: dYEIemKKXcxAjVLPuUx
email: derby451@hotmail.com
comentário:
MH7ZHT http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br