EXTRACTVALUE function oracle

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
KATIA DIAS
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qui, 16 Mar 2006 8:48 pm
Localização: são PAULO

Prezados boa noite!

Por gentileza alguém pode me ajudar? Estou utilizando a função EXTRACTVALUE function para extrair informações de um XML.

Dúvida.
Como faço para tratar uma consulta quando o arquivo pode não vir informações do " cliente contato" , pois a mesma se não existir não retorna dados?:

Exemplo:

 

Selecionar tudo

   ,TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE(teste), '/cliente'))) cliente
    ,TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE(teste),'/cliente/contato'))) Contato
Se a table Contato não existir, impacta a cliente vir dados.
Primeira consulta:

Selecionar tudo

    <cliente>
        <NOME>JOSE CARLOS SANTOS</NOMEi>
        <BAIRRO>CAMPOS SALES</BAIRROi>
                  <CIDADE>SANTOS</CIDADE>
        <ClienteContato>
        <CONTATO>MARCELO GABRIEL</cCONTATO>
      </cliente>
SEGUNDA CONSULTA:

Selecionar tudo

    <cliente>
        <NOME>JOSE CARLOS SANTOS</NOMEi>
        <BAIRRO>CAMPOS SALES</BAIRROi>
                  <CIDADE>SANTOS</CIDADE>
        </cliente>
Como posso resolver isso?

obrigada
Cristine
paulochagas
Moderador
Moderador
Mensagens: 86
Registrado em: Qua, 15 Mar 2006 2:46 pm
Localização: São Paulo - SP
Paulo Chagas Filho
__________________

Analista Funcional / Desenvolvedor Oracle EBS
MSN - paulochagas@hotmail.com
Gtalk - pachafi@gmail.com
Skype - paulochagas

Bom dia Katia

Segue um exemplo:

Selecionar tudo

select extractvalue(column_value,'/cliente/NOME') Cliente_Nome
      ,extractvalue(column_value,'/cliente/ClienteContato/CONTATO') Cliente_Contato_Nome
from
TABLE(XMLSEQUENCE(XMLTYPE('<cliente>
        <NOME>JOSE CARLOS SANTOS</NOME>
        <BAIRRO>CAMPOS SALES</BAIRRO>
                  <CIDADE>SANTOS</CIDADE>
        <ClienteContato>
        <CONTATO>MARCELO GABRIEL</CONTATO></ClienteContato>
      </cliente>'))) cliente;
      
select extractvalue(column_value,'/cliente/NOME') Cliente_Nome
      ,extractvalue(column_value,'/cliente/ClienteContato/CONTATO') Cliente_Contato_Nome
from
TABLE(XMLSEQUENCE(XMLTYPE('<cliente>
        <NOME>JOSE CARLOS SANTOS</NOME>
        <BAIRRO>CAMPOS SALES</BAIRRO>
                  <CIDADE>SANTOS</CIDADE>
        </cliente>'))) cliente;
KATIA DIAS
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qui, 16 Mar 2006 8:48 pm
Localização: são PAULO

Bom dia Paulo!

Muito obrigada. Vou testar e publico aqui.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes