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!