Ler tags de um campo xmltype

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
claudioreiis01
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 14
Registrado em: Ter, 25 Ago 2015 1:31 pm

Boa tarde,
Estou tentando ler os registros de um XML para inserir em uma tabela, eu li o xml e inseri numa tabela do tipo xmltype isso com apenas um registro isso deu certo.
agora estou tentando criar um loop para ler caso eu tenha outros dados com a mesma tag como no exemplo abaixo de clientes, onde eu teria 2 clientes ou seja eu tenho a capa da nota com um item mas os clientes eu teria 2 então teria que inserir em uma tabela 2 linhas.

Selecionar tudo

[code]<clientes>  
 <nfe>
  <nnfe>
     <cliente>  
          <nome>Fulano de Tal</nome>  
          <endereco>Rua dos Tolos numero 1</endereco>  
      </cliente>  
     <cliente>  
          <nome>Sicrano de Tal</nome>  
          <endereco>Palacio do Crepusculo numero 7</endereco>  
      </cliente>  
     <cliente>  
          <nome>Beltrano de Tal</nome>  
          <endereco>Rua da Amargura numero 13</endereco>  
      </cliente>  
</clientes>
</nnfe>
</nfe>
Eu já tentei criar um contador para tentar ver quantos registros da tag cliente teria, passando o caminho entre as tags mas não funcionou...alguém saberia como fazer ?
tora34
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 108
Registrado em: Qua, 12 Nov 2008 6:01 pm
Localização: Campo Mourão PR
Renato Pasquini
Oracle Developer

Boa tarde,

Se entendi, você quer, a partir de um arquivo XML, efetuar consultas como se fosse uma tabela.
Como resultado seria mais ou menos isso?

Selecionar tudo

SELECT *
  FROM teste_xmltype p,
       table(XMLSequence(
               extract(p.ds_xmltype,
                       '/clientes/cliente/nome'))) des
Resultado_query
Resultado_query
Para gerar este exemplo efetuei os seguintes procedimentos:
01 - Criar tabela com coluna do tipo XMLTYPE (teste_xmltype) ;
02 - Importei o XML (que você postou) na coluna teste_xmltype.DS_XML;

A Oracle disponibiliza um material completo sobre como manipular XML no banco de dados, segue link:
http://docs.oracle.com/cd/B19306_01/app ... m#BABDGDJG

Qualquer dúvida é só chamar
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 1 visitante