Bom dia!!
 

 Faz um tempo que fiz esse post que acabou ficando de lado, pois tive que parar 
para resolver um problema mais urgente e agora eu pude voltar para este projeto.
 Levando em consideração o que foi me orientado, eu estudei melhor a estrutura 
do meu XML e consegui resolver o problema e extrair as informações separando os 
blocos em pedaços dessa forma:
 

 DECLARE
          CURSOR C_INFO IS
             SELECT UPPER(REPLACE(CONVERT(EXTRACTVALUE (VALUE (EMP), '*/@Id', 
'xmlns:="http://tempuri.org/";'),'AL16UTF16','UTF8'),CHR(0),'')) EMPRESAID,
                    UPPER(REPLACE(CONVERT(EXTRACTVALUE (VALUE (CNAE), '*/@Id', 
'xmlns:="http://tempuri.org/";'),'AL16UTF16','UTF8'),CHR(0),'')) CNAEID
               FROM C2_XML_VIARAPIDA T
                  , TABLE (xmlsequence (extract (t.xml_info, '//Empresa', 
'xmlns:="http://tempuri.org/";'))) EMP
                  , TABLE (xmlsequence (extract (value (EMP), 
'//AtividadesCNAE/AtividadeCNAE', 'xmlns:="http://tempuri.org/";'))) CNAE
              ORDER BY 1, 2;             
       BEGIN
          FOR D IN C_INFO LOOP            
             INSERT INTO T_DADOS 
                   (
                   EMPRESAID,
                   CNAEID
                   )
             VALUES 
                   (
                   D.EMPRESAID,
                   D.CNAEID
                   );  
          END LOOP;
 

          COMMIT;
       EXCEPTION
          WHEN OTHERS THEN
             OUTMSG := 'ERRO - Não foi possível inserir na tabela - T_DADOS';
       END;
 

 

 Cada empresa tem várias informações, fazendo com que as tags tenham mais de um 
registro, que eu só consegui pegar desa maneira.
 Aqui utilizamos Oracle 11g com Forms11. Não testei em versões anteriores do 
Oracle.
 

 Muito Obrigada!
 

 


 

Responder a