arquivo xml
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
tem sim! no caso o que você quer fazer?
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Estou trabalhando com XML atualmente aqui na Empresa.
Para fazer a leitura, estou utilizando PACKAGES do próprio Oracle, como extractValue e extract, após eu ter inserido o arquivo XML em um campo XMLType.
Dá uma pesquisada sobre essas funções, que creio que lhe ajudarão.
Segue um exemplo do que estou fazendo:
Assim que for tendo mais informações, vou postando aqui... é q tb sou novato no assunto.
Estou trabalhando com XML atualmente aqui na Empresa.
Para fazer a leitura, estou utilizando PACKAGES do próprio Oracle, como extractValue e extract, após eu ter inserido o arquivo XML em um campo XMLType.
Dá uma pesquisada sobre essas funções, que creio que lhe ajudarão.
Segue um exemplo do que estou fazendo:
SELECT extractValue(x.teu_campo_xmltype, '/Dept/NomeDepto/') "Nome do Departamento"
FROM tua_table_xml x;
Editado pela última vez por Trevisolli em Qua, 10 Dez 2008 7:33 am, em um total de 1 vez.
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Só complementando a resposta do Trevisolli, em alguns casos é necessário informar o xmlns. Ex:
Também sou novato em XML no Oracle, tenho aprendido muita coisa, tenho aprendido nos últimos tempos! Vamos aproveitar esse tópico para trocar mais experiências!
select extractvalue(colunaXMLType, '/retConsReciNFe/cStat', 'xmlns="http://www.portalfiscal.inf.br/nfe"')
from tabelaX
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Rafael, aproveitando...
Não sei se passou por isso, porém, minha TAG XML vêm com Namespace (acho q é esse o termo) e, o extractValue me resulta em:
Invalid XPATH.
O motivo, creio eu, é porque a tag vem da seguinte forma:
Seria pra essa situação o uso do XMLNS (onde meu namespace seria o abc)?
Valeu pela força.
Não sei se passou por isso, porém, minha TAG XML vêm com Namespace (acho q é esse o termo) e, o extractValue me resulta em:
Invalid XPATH.
O motivo, creio eu, é porque a tag vem da seguinte forma:
<abc:Mensagem>
<abc:Usuario>
Valeu pela força.
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Trevisolli,
quando o XML que você estiver manipulando tiver um namespace declarado, aí você deve colocar ele no seu select, dentro do extractvalue.
exemplo de XML:
-----
Agora imagina que quero pegar o campo xMotivo!
testei o mesmo select sem o xmlns e me retorna null!
Testa aí no seu select e fala se deu certo!
quando o XML que você estiver manipulando tiver um namespace declarado, aí você deve colocar ele no seu select, dentro do extractvalue.
exemplo de XML:
<?xml version="1.0" encoding="UTF-8"?>
<retCancNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.07">
<infCanc>
<tpAmb>2</tpAmb>
<verAplic>1.07</verAplic>
<cStat>101</cStat>
<xMotivo>Cancelamento de NF-e homologado</xMotivo>
<cUF>31</cUF>
<chNFe>31081265382137000101550000000000190006177015</chNFe>
<dhRecbto>2008-12-09T17:42:21</dhRecbto>
<nProt>131080003632333</nProt>
</infCanc>
</retCancNFe>
Agora imagina que quero pegar o campo xMotivo!
select extractvalue(xmlRetorno, '/retCancNFe/infCanc/cStat', 'xmlns="http://www.portalfiscal.inf.br/nfe')
from nfe_webservices
where idtransacao = 1119
Testa aí no seu select e fala se deu certo!
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, fiz um teste com EXTRACT para visualizar AS informações e, com este código:
Me retorna um XMLTYPE, contendo AS seguintes informações:
Porém, estou necessitando que me retorne 4 linhas, sem AS tags XML:
Tentei utilizar o ExtractValue da forma abaixo, porém, retorna NULL:
Utilizando o ExtractValue sem XMLSequence ele me retorna o seguinte erro:
ORA-19025: EXTRACTVALUE returns value of only one node.
Estou realizando pesquisas e testes aqui, porém, caso alguém já tenha passado por isso, agradeço a ajuda.
Nota: Estou trabalhando com o TISS, da ANS (Saúde Suplementar) e, preciso retornar os DETALHES das Guias.
Complementando:
A query abaixo até funciona (retornar número carteira) sem erros, porém, retorna NULL:
SELECT EXTRACT (x.dsxml ,'/mensagemTISS/prestadorParaOperadora/loteGuias/guias/guiaFaturamento/guiaSP_SADT/dadosBeneficiario/numeroCarteira','xmlns="http://www.ans.gov.br/padroes/tiss/schemas"')
FROM rg_xml x;
<tiss:numeroCarteira xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas">00020602001854007</tiss:numeroCarteira>
<tiss:numeroCarteira xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas">00026704001948007</tiss:numeroCarteira>
<tiss:numeroCarteira xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas">00029675005421002</tiss:numeroCarteira>
<tiss:numeroCarteira xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas">00029674008760004</tiss:numeroCarteira>
00020602001854007
00026704001948007
00029675005421002
00029674008760004
SELECT extractValue(VALUE (d), '/guiaSP_SADT/dadosBeneficiario','xmlns="http://www.ans.gov.br/padroes/tiss/schemas"')
FROM rg_xml x,
TABLE (XMLSEQUENCE (EXTRACT (x.dsxml ,'/mensagemTISS/prestadorParaOperadora/loteGuias/guias/guiaFaturamento/guiaSP_SADT'))) d;
ORA-19025: EXTRACTVALUE returns value of only one node.
Estou realizando pesquisas e testes aqui, porém, caso alguém já tenha passado por isso, agradeço a ajuda.
Nota: Estou trabalhando com o TISS, da ANS (Saúde Suplementar) e, preciso retornar os DETALHES das Guias.
Complementando:
A query abaixo até funciona (retornar número carteira) sem erros, porém, retorna NULL:
select extractvalue(value(d),'/dadosBeneficiario/numeroCarteira','xmlns="http://www.ans.gov.br/padroes/tiss/schemas"') carteira
from rg_xml x,
table(xmlsequence(extract(x.dsxml, '/mensagemTISS/prestadorParaOperadora/loteGuias/guias/guiaFaturamento/guiaSP_SADT/dadosBeneficiario'))) d;
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Trevisolli,
Posta o exemplo seu seu XML para vermos o que pode ser feito!
att,
Posta o exemplo seu seu XML para vermos o que pode ser feito!
att,
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Pra constar:
Consegui extrair o campo Número Carteira do XML, onde o mesmo deve retornar (neste caso) 4 linhas.
Consegui extrair o campo Número Carteira do XML, onde o mesmo deve retornar (neste caso) 4 linhas.
SELECT extractvalue(VALUE(tab),'/tiss:numeroCarteira','xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') Carteira -- Passar namespace e end do namespace
FROM rg_xml x,
table (
XMLSequence(extract(
x.dsxml,
'/mensagemTISS/prestadorParaOperadora/loteGuias/guias/guiaFaturamento/guiaSP_SADT/dadosBeneficiario/numeroCarteira','xmlns="http://www.ans.gov.br/padroes/tiss/schemas"') -- Não utilizar o namespace, apenas o endereço (sem o TISS)
)
) tab;
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Pessoal, complementando, para se ler mais de uma coluna do XML:
SELECT extractvalue(VALUE(tab),'/tiss:identificacaoGuiaSADTSP/tiss:registroANS'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') registroANS
, extractvalue(VALUE(tab),'/tiss:identificacaoGuiaSADTSP/tiss:dataEmissaoGuia'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') dataEmissaoGuia
, extractvalue(VALUE(tab),'/tiss:identificacaoGuiaSADTSP/tiss:numeroGuiaPrestador'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') numeroGuiaPrestador
, extractvalue(VALUE(tab),'/tiss:identificacaoGuiaSADTSP/tiss:numeroGuiaOperadora'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') numeroGuiaOperadora
FROM tmp_recebe_arq_xml p,
table(XMLSequence(extract(p.txt_arq,
'/mensagemTISS/prestadorParaOperadora/loteGuias/guias/guiaFaturamento/guiaSP_SADT/identificacaoGuiaSADTSP'
,'xmlns="http://www.ans.gov.br/padroes/tiss/schemas"'))) tab;
-- No table: informar o até o nó Pai.
-- No extractvalue: Informar o Pai ('/tiss:identificacaoGuiaSADTSP'), mais o filho
-- que se deseja listar ('/tiss:registroANS'), ficando: '/tiss:identificacaoGuiaSADTSP/tiss:registroANS'
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
Boa tarde Trevisolli
usei como base seu exemplo para buscar os dados dentro do XML. (TISS/ANS)
Porém dessa maneira esta extremamente lento a consulta! O custo é > 10.000.000.000.000
O código que estou utilizando é o seguinte:
Fiz dessa maneira para poder selecionar os diversos relacionamentos de um para muitos do arquivo!
Gostaria de uma dica para otimizar essa consulta. Conhece alguma maneira de organizar esse select para que faça a mesma coisa com um custo pelo menos "um milhão de vezes" menor!
Ah, esse exemplo que estou listando é apenas parte do que deverá ser o select quando ficar pronto, se nesse ponto do desenvolvimento o select já esta com o custo dessa maneira imagina quando eu colocar o dobro de colunas que existem atualmente!
usei como base seu exemplo para buscar os dados dentro do XML. (TISS/ANS)
Porém dessa maneira esta extremamente lento a consulta! O custo é > 10.000.000.000.000
O código que estou utilizando é o seguinte:
SELECT extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:identificacaoTransacao/tiss:tipoTransacao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') tipoTransacao,
extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:identificacaoTransacao/tiss:sequencialTransacao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') sequencialTransacao,
extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:identificacaoTransacao/tiss:dataRegistroTransacao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') dataRegistroTransacao,
extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:identificacaoTransacao/tiss:horaRegistroTransacao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') horaRegistroTransacao,
extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:origem/tiss:codigoPrestadorNaOperadora/tiss:codigoPrestadorNaOperadora'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') codigoPrestadorNaOperadora,
extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:destino/tiss:registroANS'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') registroANS,
extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:versaoPadrao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') versaoPadrao,
extractvalue(VALUE(tac),'/tiss:prestadorParaOperadora/tiss:loteGuias/tiss:numeroLote'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') numeroLote,
extractvalue(VALUE(guiaSP_SADT),'/tiss:guiaSP_SADT/tiss:numeroGuiaPrincipal'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') nr_guia_principal,
extractvalue(VALUE(guiaSP_SADT),'/tiss:guiaSP_SADT/tiss:dadosBeneficiario/tiss:numeroCarteira'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') nr_carteira_beneficiario,
extractvalue(VALUE(guiaSP_SADT),'/tiss:guiaSP_SADT/tiss:dadosBeneficiario/tiss:nomeBeneficiario'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') nm_beneficiario,
extractvalue(VALUE(SP_SADT_proc),'/tiss:procedimentos/tiss:procedimento/tiss:codigo'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') cd_procedimento,
extractvalue(VALUE(SP_SADT_proc),'/tiss:procedimentos/tiss:procedimento/tiss:descricao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"') nm_procedimento
FROM TABLE_XML p,
table(XMLSequence(extract(p.xml_data,
'/mensagemTISS'
,'xmlns="http://www.ans.gov.br/padroes/tiss/schemas"'))) tac,
table(XMLSequence(extract(value(tac),
'/mensagemTISS/prestadorParaOperadora/loteGuias/guias/guiaFaturamento'
,'xmlns="http://www.ans.gov.br/padroes/tiss/schemas"'))) guiaFaturamento,
table(XMLSequence(extract(value(guiaFaturamento),
'/guiaFaturamento/guiaSP_SADT'
,'xmlns="http://www.ans.gov.br/padroes/tiss/schemas"'))) guiaSP_SADT,
table(XMLSequence(extract(value(guiaSP_SADT),
'/guiaSP_SADT/procedimentosRealizados/procedimentos'
,'xmlns="http://www.ans.gov.br/padroes/tiss/schemas"'))) SP_SADT_proc;
Gostaria de uma dica para otimizar essa consulta. Conhece alguma maneira de organizar esse select para que faça a mesma coisa com um custo pelo menos "um milhão de vezes" menor!
Ah, esse exemplo que estou listando é apenas parte do que deverá ser o select quando ficar pronto, se nesse ponto do desenvolvimento o select já esta com o custo dessa maneira imagina quando eu colocar o dobro de colunas que existem atualmente!
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Willian,
Quando você faz um select utilizando XMLQuery, o Oracle irá retornar todos os dados das tags no formato varchar2(4000).
Será que se você tratar o tipo de dados que ele irá retornar a performance melhora?
Ex: to_number(extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:identificacaoTransacao/tiss:sequencialTransacao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"')) sequencialTransacao
para campos varchar que você sabe o tamanho:
Ex: substr (extractvalue(VALUE(guiaSP_SADT),'/tiss:guiaSP_SADT/tiss:dadosBeneficiario/tiss:nomeBeneficiario'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"'),1,60) nm_beneficiario
Eu tenho aqui algumas views utilizando o XMLQuery, depois que tratei cada campo notei uma melhora na performance!
Quando você faz um select utilizando XMLQuery, o Oracle irá retornar todos os dados das tags no formato varchar2(4000).
Será que se você tratar o tipo de dados que ele irá retornar a performance melhora?
Ex: to_number(extractvalue(VALUE(tac),'/tiss:mensagemTISS/tiss:cabecalho/tiss:identificacaoTransacao/tiss:sequencialTransacao'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"')) sequencialTransacao
para campos varchar que você sabe o tamanho:
Ex: substr (extractvalue(VALUE(guiaSP_SADT),'/tiss:guiaSP_SADT/tiss:dadosBeneficiario/tiss:nomeBeneficiario'
,'xmlns:tiss="http://www.ans.gov.br/padroes/tiss/schemas"'),1,60) nm_beneficiario
Eu tenho aqui algumas views utilizando o XMLQuery, depois que tratei cada campo notei uma melhora na performance!
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Qui, 23 Abr 2009 1:49 pm
- Localização: Sp
Klayton Anselmo
Ola pessoal boa tarde,
Tenho uma tag que contem as seguintes informações:
Consegui extrai todas as informações só que em 2 select´s distintos:
Com esse outro select consegui extrair as informações, mas elas vieram duplicadas: forma selecioandas 16 linhas e não 4 como deveria.
alguém tem alguma ideia?
Abraços.
Tenho uma tag que contem as seguintes informações:
<vPrest>
<vTPrest>22.02</vTPrest>
<vRec>22.02</vRec>
<Comp>
<xNome>DESPACHO TOTAL</xNome> <vComp>11.36</vComp>
</Comp>
<Comp>
<xNome>PEDAGIO TOTAL</xNome>
<vComp>0.32</vComp>
</Comp>
<Comp>
<xNome>FRETE PESO VOLU</xNome>
<vComp>8.75</vComp>
</Comp>
<Comp>
<xNome>FRETE VALOR TOT</xNome>
<vComp>1.59</vComp>
</Comp>
</vPrest>
SELECT extractvalue(VALUE(PREST), '/XNOME')
FROM T_XML_CTE CC,
TABLE(XMLSequence(Extract(CC.CORPO_XML, '/ENVICTE/CTE/INFCTE/VPREST/COMP/XNOME'))) PREST
WHERE CC.DOCUMENTO = '115038'
AND CC.SERIE = 'A1'
AND CC.FILIAL = '003';
SELECT extractvalue(VALUE(VCOMP), '/VCOMP')
FROM T_XML_CTE CC,
TABLE(XMLSequence(Extract(CC.CORPO_XML, '/ENVICTE/CTE/INFCTE/VPREST/COMP/VCOMP'))) VCOMP
WHERE CC.DOCUMENTO = '115038'
AND CC.SERIE = 'A1'
AND CC.FILIAL = '003';
Com esse outro select consegui extrair as informações, mas elas vieram duplicadas: forma selecioandas 16 linhas e não 4 como deveria.
SELECT distinct(extractvalue(VALUE(PREST), '/XNOME')),
extractvalue(VALUE(VCOMP), '/VCOMP')
FROM T_XML_CTE CC,
TABLE(XMLSequence(Extract(CC.CORPO_XML, '/ENVICTE/CTE/INFCTE/VPREST/COMP/XNOME'))) PREST,
TABLE(XMLSequence(Extract(CC.CORPO_XML, '/ENVICTE/CTE/INFCTE/VPREST/COMP/VCOMP'))) VCOMP
WHERE CC.DOCUMENTO = '115038'
AND CC.SERIE = 'A1'
AND CC.FILIAL = '003';
alguém tem alguma ideia?
Abraços.
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
Klayton Anselmo...
Desculpe a demora, mas seu codigo ficaria mais ou menos assim:
Quem saiba uma maneira de melhorar esse codigo tambem seria uma dica bem vinda para mim!!!!
Desculpe a demora, mas seu codigo ficaria mais ou menos assim:
SELECT extractvalue(VALUE(COMP),
'/COMP/XNOME') PREST,
extractvalue(VALUE(COMP),
'/COMP/VCOMP') VCOMP
FROM T_XML_CTE CC,
TABLE(XMLSequence(Extract(CC.CORPO_XML, '/ENVICTE/CTE/INFCTE/VPREST/COMP'))) COMP
WHERE CC.DOCUMENTO = '115038'
AND CC.SERIE = 'A1'
AND CC.FILIAL = '003';
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 29 Mai 2009 6:50 pm
- Localização: Uberlandia
Amarildo Marques
Pessoal,
gostaria de saber se é possivel extrair informacoes de um xml onte tem uma tag de grupo e seus dados logo abaixo: ex:
. . .
<DETALHE ORDEM="1">
. . .
<DETALHE ORDEM="20">
. . .
gostaria de pegar este numero 1, 20. estou usando as dicas citadas anteriormente da funcao extractvalue() e não estou conseguindo
grato pela atenção
gostaria de saber se é possivel extrair informacoes de um xml onte tem uma tag de grupo e seus dados logo abaixo: ex:
. . .
<DETALHE ORDEM="1">
. . .
<DETALHE ORDEM="20">
. . .
gostaria de pegar este numero 1, 20. estou usando as dicas citadas anteriormente da funcao extractvalue() e não estou conseguindo
grato pela atenção
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Colega,
Se entendi bem você deseja pegar um atributo da Tag XML. Você pode utilizar da seguinte forma:
Então se o atributo da tag que você quer extrair é "ordem" você deve utilizar o "@" antes!
Se entendi bem você deseja pegar um atributo da Tag XML. Você pode utilizar da seguinte forma:
extractvalue(VALUE(TAB),'/caminho/@ORDEM
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 29 Mai 2009 6:50 pm
- Localização: Uberlandia
Amarildo Marques
Valeu,
que Deus continue te abençoando e que você continua assim ajudando as pessoas, caso algum dia posso ajuda-lo será uma satisfaçao.
abraços e fique com Deus!
que Deus continue te abençoando e que você continua assim ajudando as pessoas, caso algum dia posso ajuda-lo será uma satisfaçao.
abraços e fique com Deus!
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 29 Mai 2009 6:50 pm
- Localização: Uberlandia
Amarildo Marques
Pessoal,
estou gerando um arquivo xml usando pl/sql, e no inicio do mesmo deveria ter esta informacao:
alguém poderia me ajudar ?
Amarildo.
estou gerando um arquivo xml usando pl/sql, e no inicio do mesmo deveria ter esta informacao:
<?xml version="1.0" encoding="UTF-8" ?> .
Amarildo.
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
Pessoall, boa tarde. Estou com o seguinte problema:
Na query:
resultado:
Na query:
resultado:
na query:
resultado:
ou seja, quando eu tento juntar a NRONNF com o PESO (por exemplo) o resultado fica duplicado.
Deveria resultar assim :
Não estou conseguindo ler o 'pai' com seus 'filhos'.
Desde já agradeço,
Nelson
Na query:
Select extractValue (value(IDE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) IDE
where id = 7
NRONNF
NFe35080599999090910270550010000000015180051273
NFe22222222222222222222222222222222222222222222
select extractValue (VALUE(EMI), '/vol/pesoB', 'xmlns="http://www.portalfiscal.inf.br/nfe"') peso
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe/transp/vol','xmlns="http://www.portalfiscal.inf.br/nfe"'))) EMI
where id = 7
PESO
1200000000.000
2200000000.000
Select extractValue (value(NNF),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(EMI), '/vol/pesoB', 'xmlns="http://www.portalfiscal.inf.br/nfe"') peso
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) NNF,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe/transp/vol','xmlns="http://www.portalfiscal.inf.br/nfe"'))) EMI
Where id = 7
NRONNF PESO
NFe35080599999090910270550010000000015180051273 1200000000.000
NFe35080599999090910270550010000000015180051273 2200000000.000
NFe22222222222222222222222222222222222222222222 1200000000.000
NFe22222222222222222222222222222222222222222222 2200000000.000
Deveria resultar assim :
NRONNF PESO
NFe35080599999090910270550010000000015180051273 1200000000.000
NFe22222222222222222222222222222222222222222222 2200000000.000
Desde já agradeço,
Nelson
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Nelson,
porque você está utilizando 2 paths de XMLSequence?
Não dá pra sintetizar tudo em um unico Path não?
ex:
só uma idéia! verifica aí se funciona...
porque você está utilizando 2 paths de XMLSequence?
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) NNF,
e
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe/transp/vol','xmlns="http://www.portalfiscal.inf.br/nfe"'))) EMI
ex:
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), '/infNFe/transp/vol/pesoB', 'xmlns="http://www.portalfiscal.inf.br/nfe"') peso
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE
Where id = 7
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
Rafael, entendi o path a ser colocado,
mas porque que na query o < det nItem > e o xProd não aparecem ????
só mais uma vez, e ... acredito que essa fase vai terminar......
grato
mas porque que na query o < det nItem > e o xProd não aparecem ????
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem', 'xmlns="http://www.portalfiscal.inf.br/nfe"') item,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem/prod/xProd', 'xmlns="http://www.portalfiscal.inf.br/nfe"') xprod
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE
Where id = 7
grato
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
OK, entendi o path a ser colocado,
mas porque que na query o < det nItem > e o xProd não aparecem ????
só mais uma vez, e ... acredito que essa fase vai terminar......
grato
mas porque que na query o < det nItem > e o xProd não aparecem ????
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem', 'xmlns="http://www.portalfiscal.inf.br/nfe"') item,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem/prod/xProd', 'xmlns="http://www.portalfiscal.inf.br/nfe"') xprod
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE
Where id = 7
grato
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
No link www.blognovo.com tem um exemplo de como fazer JOIN's nos selects de XML.
Mas mesmo assim,
creio que sua query ficaria assim:
Veja que a segunda query do seu select, ao invés de "extract(conteudo" ficou como "extract(value(NNF)"
Abraço, qualquer dúvida, estamos aí!
Mas mesmo assim,
creio que sua query ficaria assim:
Select extractValue (value(NNF),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(EMI), '/vol/pesoB', 'xmlns="http://www.portalfiscal.inf.br/nfe"') peso
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) NNF,
TABle(XMLSequence(extract(value(NNF),'/infNFe/transp/vol','xmlns="http://www.portalfiscal.inf.br/nfe"'))) EMI
Where id = 7
Abraço, qualquer dúvida, estamos aí!
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
mas a query que não funciona é:
não mostra o nItem e o xProd .....
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem', 'xmlns="http://www.portalfiscal.inf.br/nfe"') item,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem/prod/xProd', 'xmlns="http://www.portalfiscal.inf.br/nfe"') xprod
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE
Where id = 7
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
OK...
Imaginei que seu problema era em extrair dados mestre-detalhes.
Bom mas o que não esta funcionando nessa query?
Teria como passar um trecho do XML?
Imaginei que seu problema era em extrair dados mestre-detalhes.
Bom mas o que não esta funcionando nessa query?
Teria como passar um trecho do XML?
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem', 'xmlns="http://www.portalfiscal.inf.br/nfe"') item,
extractValue (VALUE(xmlNFE_prod), 'prod/xProd', 'xmlns="http://www.portalfiscal.inf.br/nfe"') xprod
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE
TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
Where id = 7
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
segue um trecho ..
lembrando que pode ter (n) itens
<?xml version="1.0" encoding="utf-8"?>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10">
<ide>
<cUF>35</cUF>
<cNF>518005127</cNF>
<natOp>Venda a vista</natOp>
<indPag>0</indPag>
<mod>55</mod>
<serie>1</serie>
<nNF>1</nNF>
...
...
</entrega>
<det nItem="1">
<prod>
<cProd>00001</cProd>
<cEAN />
<xProd>Agua Mineral</xProd>
<CFOP>5101</CFOP>
<uCom>dz</uCom>
<qCom>1000000.0000</qCom>
<vUnCom>1</vUnCom>
<vProd>10000000.00</vProd>
<cEANTrib />
<uTrib>und</uTrib>
<qTrib>12000000.0000</qTrib>
<vUnTrib>1</vUnTrib>
</prod>
<imposto>
<ICMS>
<ICMS00>
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
Amigo, o ultimo select que te passei não resolve esse caso?
Se não deu certo vou fazer uma simulação assim que chegar em casa. aqui não tenho nenhum banco disponível para fazer testes!
Se não deu certo vou fazer uma simulação assim que chegar em casa. aqui não tenho nenhum banco disponível para fazer testes!
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
Query,
deu esse erro !!!!!!
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem', 'xmlns="http://www.portalfiscal.inf.br/nfe"') item,
extractValue (VALUE(xmlNFE_prod), 'prod/xProd', 'xmlns="http://www.portalfiscal.inf.br/nfe"') xprod
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE,
TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
Where id = 7
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00601: Invalid token in: '/infNFe/det/nItem/prod/'
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
na linha
retirei o " / "
e não apareceu nada
grato
Nelson
TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
grato
Nelson
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 02 Abr 2008 2:40 pm
- Localização: Joinville - SC
- Contato:
TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
ASSIM O CÍDIGO FICARIA ASSIM:
Select extractValue (value(xmlNFE),'/infNFe/@Id', 'xmlns="http://www.portalfiscal.inf.br/nfe"') NroNNF,
extractValue (VALUE(xmlNFE), 'infNFe/det/nItem', 'xmlns="http://www.portalfiscal.inf.br/nfe"') item,
extractValue (VALUE(xmlNFE_prod), 'prod/xProd', 'xmlns="http://www.portalfiscal.inf.br/nfe"') xprod
from info_xml,
TABle(XMLSequence(extract(conteudo,'/NFe/infNFe','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE,
TABle(XMLSequence(extract(xmlNFE,'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
Where id = 7
-
- Rank: Programador Júnior
- Mensagens: 21
- Registrado em: Ter, 09 Jun 2009 9:44 am
- Localização: São Paulo
Bom dia.
na linha :
deu :
grato
Nelson
na linha :
TABle(XMLSequence(extract(xmlNFE,'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
ORA-00904: "XMLNFE": invalid identifier
Nelson
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Qui, 10 Jun 2010 2:43 pm
- Localização: AL
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:consultarContaContabilResponse xmlns:ns2="http://ws.ofm.com.br/">
<return>
<listaResultadoConsulta xsi:type="ns2:contaContabilDTO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cdRedConta>1</cdRedConta>
<codigoConta>1</codigoConta>
<grupoConta>1</grupoConta>
<mascara>1</mascara>
<nivelConta>1</nivelConta>
<nomeConta>ATIVO</nomeConta>
<pertenceAneel>N</pertenceAneel>
<tipoConta>S</tipoConta>
<tipoSaldoConta>D</tipoSaldoConta>
</listaResultadoConsulta>
<listaResultadoConsulta xsi:type="ns2:contaContabilDTO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cdRedConta>22938</cdRedConta>
<codigoConta>11101300000200138</codigoConta>
<contaSomar>111013</contaSomar>
<grupoConta>1</grupoConta>
<mascara>111.01.3.0.0.0.002.001.38</mascara>
<nivelConta>6</nivelConta>
<nomeConta>BB AG 4061-4 C/C 010-9 GARANTIA DE LEILÃO A-5</nomeConta>
<pertenceAneel>N</pertenceAneel>
<tipoConta>A</tipoConta>
<tipoSaldoConta>D</tipoSaldoConta>
</listaResultadoConsulta>
<listaResultadoConsulta xsi:type="ns2:contaContabilDTO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cdRedConta>19309</cdRedConta>
<codigoConta>11101300000210405</codigoConta>
<contaSomar>111013</contaSomar>
<grupoConta>1</grupoConta>
<mascara>111.01.3.0.0.0.002.104.05</mascara>
<nivelConta>6</nivelConta>
<nomeConta>CEF AG GRUTA 301-6</nomeConta>
<pertenceAneel>N</pertenceAneel>
<tipoConta>A</tipoConta>
<tipoSaldoConta>D</tipoSaldoConta>
</listaResultadoConsulta>
<listaResultadoConsulta xsi:type="ns2:contaContabilDTO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cdRedConta>22836</cdRedConta>
<codigoConta>11101300000223703</codigoConta>
<contaSomar>111013</contaSomar>
<grupoConta>1</grupoConta>
<mascara>111.01.3.0.0.0.002.237.03</mascara>
<nivelConta>6</nivelConta>
<nomeConta>BRADESCO AG 0895 TRIANON 07/09 CC 79742-1</nomeConta>
<pertenceAneel>N</pertenceAneel>
<tipoConta>A</tipoConta>
<tipoSaldoConta>D</tipoSaldoConta>
</listaResultadoConsulta>
<resultadoMensagem>
<mensagem>Operação Realizada com Sucesso.</mensagem>
<tipoMensagem>INFO</tipoMensagem>
</resultadoMensagem>
</return>
</ns2:consultarContaContabilResponse>
</soap:Body>
</soap:Envelope>
- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Umm.. ok?
Não entendi.

Não entendi.
-
- Rank: Analista Júnior
- Mensagens: 88
- Registrado em: Sex, 18 Ago 2006 11:13 am
- Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com
MSN / TALK - roberto.fernandes@gmail.com
Olá Mestres, Boa Noite.
Por favor podem me ajudar no codigo abaixo, MESTRE x DETALHE não retorna dados no detalhe.
Se executar o codigo acima podem ver que o retorno02 retorna nulo.

Por favor podem me ajudar no codigo abaixo, MESTRE x DETALHE não retorna dados no detalhe.
DECLARE
v$xml XMLTYPE;
v$retorno01 LONG;
v$retorno02 LONG;
v$xmlns VARCHAR2(100) := 'xmlns="http://www.portalfiscal.inf.br/cte';
BEGIN
v$xml :=
XMLTYPE
('<?xml version="1.0" encoding="UTF-8"?><cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="1.03"><CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCte versao="1.03" Id="CTe31110142278291001953570000000000370061280213"><ide><cUF>31</cUF><cCT>006128021</cCT><CFOP>5352</CFOP><natOp>PREST.SERV.TRANSP.ESTAB.INDUSTRIAL</natOp><forPag>2</forPag><mod>57</mod><serie>0</serie><nCT>37</nCT><dhEmi>2011-01-18T12:00:01</dhEmi><tpImp>2</tpImp><tpEmis>1</tpEmis><cDV>3</cDV><tpAmb>2</tpAmb><tpCTe>0</tpCTe><procEmi>0</procEmi><verProc>1.03</verProc><cMunEmi>3170206</cMunEmi><xMunEmi>UBERLANDIA</xMunEmi><UFEmi>MG</UFEmi><modal>01</modal><tpServ>0</tpServ><cMunIni>3170206</cMunIni><xMunIni>UBERLANDIA</xMunIni><UFIni>MG</UFIni><cMunFim>3170206</cMunFim><xMunFim>UBERLANDIA</xMunFim><UFFim>MG</UFFim><retira>1</retira><toma03><toma>0</toma></toma03></ide><emit><CNPJ>42278291001953</CNPJ><IE>0010439740045</IE><xNome>UBERLANDIA</xNome><xFant>UBERLANDIA</xFant><enderEmit><xLgr>RUA REPUBLICA PIRATINI, 1145 PARTE</xLgr><nro>0</nro><xBairro>BAIRRO N. SENHORA DA</xBairro><cMun>3170206</cMun><xMun>UBERLANDIA</xMun><CEP>38402028</CEP><UF>MG</UF></enderEmit></emit><rem><CNPJ>20730099000194</CNPJ><IE>ISENTO</IE><xNome>SADIA S.A.</xNome><xFant>SADIA S.A.</xFant><enderReme><xLgr>R SENADOR ATTILIO FONTANA, 86</xLgr><nro>0</nro><xBairro>CENTRO</xBairro><cMun>4204301</cMun><xMun>CONCORDIA</xMun><CEP>89700000</CEP><UF>SC</UF></enderReme><infNF><serie>U</serie><nDoc>37</nDoc><dEmi>2011-01-18</dEmi><vBC>284.09</vBC><vICMS>34.09</vICMS><vBCST>284.09</vBCST><vST>34.09</vST><vProd>80000.00</vProd><vNF>9001.00</vNF><nCFOP>5352</nCFOP><nPeso>30000.000</nPeso><locRet><CNPJ>20730099008845</CNPJ><xNome>SADIA S.A.</xNome><xLgr>AV. CORONEL JOSE TEOFILO CARNEIRO, 1001,</xLgr><nro>0</nro><xBairro>são JOSE</xBairro><cMun>3170206</cMun><xMun>UBERLANDIA</xMun><UF>MG</UF></locRet></infNF></rem><exped><CNPJ>42278291001953</CNPJ><IE>0010439740045</IE><xNome>UBERLANDIA</xNome><enderExped><xLgr>RUA REPUBLICA PIRATINI, 1145 PARTE</xLgr><nro>0</nro><xBairro>BAIRRO N. SENHORA DA</xBairro><cMun>3170206</cMun><xMun>UBERLANDIA</xMun><CEP>38402028</CEP><UF>MG</UF></enderExped></exped><receb><CNPJ>42278291001953</CNPJ><IE>0010439740045</IE><xNome>UBERLANDIA</xNome><enderReceb><xLgr>RUA REPUBLICA PIRATINI, 1145 PARTE</xLgr><nro>0</nro><xBairro>BAIRRO N. SENHORA DAS GRA</xBairro><cMun>3170206</cMun><xMun>UBERLANDIA</xMun><CEP>38402028</CEP><UF>MG</UF></enderReceb></receb><dest><CNPJ>20730099008845</CNPJ><IE>7022691561144</IE><xNome>SADIA S.A.</xNome><enderDest><xLgr>AV. CORONEL JOSE TEOFILO CARNEIRO, 1001,</xLgr><nro>0</nro><xBairro>são JOSE</xBairro><cMun>3170206</cMun><xMun>UBERLANDIA</xMun><CEP>38401999</CEP><UF>MG</UF></enderDest><locEnt><CNPJ>20730099008845</CNPJ><xNome>SADIA S.A.</xNome><xLgr>AV. CORONEL JOSE TEOFILO CARNEIRO, 1001,</xLgr><nro>0</nro><xBairro>são JOSE</xBairro><cMun>3170206</cMun><xMun>UBERLANDIA</xMun><UF>MG</UF></locEnt></dest><vPrest><vTPrest>284.09</vTPrest><vRec>284.09</vRec><Comp><xNome>FRETE PESO</xNome><vComp>250.00</vComp></Comp></vPrest><imp><ICMS><CST00><CST>00</CST><vBC>284.09</vBC><pICMS>12.00</pICMS><vICMS>34.09</vICMS></CST00></ICMS><infAdFisco>OPERACAO DE TRANSPORTE MULTIMODAL/INTERMODAL. TRANSBORDO PARA O MODAL RODOVIARIO EM UBERLANDIA-MG</infAdFisco></imp><infCTeNorm><infCarga><vMerc>80000.00</vMerc><proPred>DIVERSOS</proPred><xOutCat>CAIXA</xOutCat><infQ><cUnid>01</cUnid><tpMed>CAIXA</tpMed><qCarga>900.0000</qCarga></infQ></infCarga><contQt><nCont>GSTU8099053</nCont><lacContQt><nLacre>123</nLacre></lacContQt><dPrev>2011-01-18</dPrev></contQt><rodo><RNTRC>00000000000000</RNTRC><dPrev>2011-01-21</dPrev><lota>0</lota><valePed><respPg>0</respPg><disp><tpDisp>1</tpDisp><xEmp>EMPRESA CREDENCIADA</xEmp><dVig>2011-01-21</dVig><nDisp>10</nDisp></disp></valePed><veic><RENAVAM>000000000</RENAVAM><placa>KSZ7951</placa><tara>1</tara><capKG>1000</capKG><capM3>10</capM3><tpProp>T</tpProp><tpVeic>0</tpVeic><tpRod>00</tpRod><tpCar>00</tpCar><UF>RJ</UF></veic></rodo></infCTeNorm></infCte></CTe><protCTe versao="1.03"><infProt><tpAmb>2</tpAmb><verAplic>1.1</verAplic><chCTe>31110142278291001953570000000000370061280213</chCTe><dhRecbto>2011-01-18T08:57:21</dhRecbto><digVal></digVal><cStat>212</cStat><xMotivo>Rejeição: Data de emissão CT-e posterior a data de recebimento</xMotivo></infProt></protCTe></cteProc>'
);
SELECT EXTRACTVALUE (v$xml,'/cteProc/CTe/infCte/ide/cCT/text()',v$xmlns),
EXTRACTVALUE (VALUE (DET), '/CTe/infCte/ide/cCT/text()') RET_DET
INTO v$retorno01, v$retorno02
FROM DUAL,
TABLE (XMLSEQUENCE (EXTRACT (v$xml, '/cteProc', v$xmlns))) DET;
dbms_output.put_line('01 '||v$retorno01);
dbms_output.put_line('02 '||v$retorno02);
END;

- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Olá,
Você poderia postar o que você precisa que seja retornado para esse exemplo?
Você poderia postar o que você precisa que seja retornado para esse exemplo?
-
- Rank: Analista Júnior
- Mensagens: 88
- Registrado em: Sex, 18 Ago 2006 11:13 am
- Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com
MSN / TALK - roberto.fernandes@gmail.com
Boa Tarde.
Os dois v$retorno01 e v$retorno02 precisam retornar o mesmo conteudo.
O v$retorno01 eu acesso pelo XML completo já o v$retorno02 e pelo TABLE (XMLSEQUENCE (EXTRACT.
Os dois v$retorno01 e v$retorno02 precisam retornar o mesmo conteudo.
O v$retorno01 eu acesso pelo XML completo já o v$retorno02 e pelo TABLE (XMLSEQUENCE (EXTRACT.
- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Executei o seu código e retornou o seguinte:
Você quer que retorne isso abaixo??
Ou entendi errado?
Se não for isso estou perdido, e acho que não sou o único
Daria pra postar exatamente o que você quer ver?
01 006128021
02
01 006128021
02 006128021
Se não for isso estou perdido, e acho que não sou o único

Daria pra postar exatamente o que você quer ver?
-
- Rank: Programador Pleno
- Mensagens: 43
- Registrado em: Ter, 20 Mar 2012 11:37 am
- Localização: Campinas
Leandro L. Miranda
Olá pessoal,
Estou fazendo a importação e tratamento de arquivos XML na base Oracle. Todo o processo de identificação dos arquivos XML no diretório, importação dos arquivos na base está ok. Não estou conseguindo fazer a leitura dos dados da table sys.xmltype.
Já tentei fazer a leitura de várias formas, mas nenhuma delas com sucesso.
--ETAPA DE LEITURA DOS ARQUIVOS XML E IMPORTAÇÃO PARA BD
--ETAPA LEITURA DAS TAGS
Tentei fazer com EXTRACT() -- Sem sucesso
ExtractValue() -- Sem sucesso
O mais próximo que cheguei até agora:
O resultado vem vazio (null)
Segue também exemplo do arquivo XML
Podem me ajudar com este problema?
Att,
Estou fazendo a importação e tratamento de arquivos XML na base Oracle. Todo o processo de identificação dos arquivos XML no diretório, importação dos arquivos na base está ok. Não estou conseguindo fazer a leitura dos dados da table sys.xmltype.
Já tentei fazer a leitura de várias formas, mas nenhuma delas com sucesso.
--ETAPA DE LEITURA DOS ARQUIVOS XML E IMPORTAÇÃO PARA BD
---CRIA DIRETÓRIOS PARA LEITURA E GRAVAÇÃO DOS ARQUIVOS
CREATE OR REPLACE DIRECTORY d_received_files AS 'D:\Receive';
CREATE OR REPLACE DIRECTORY d_bkp_received_files AS 'D:\Bkp_Receive';
CREATE OR REPLACE DIRECTORY d_sended_files AS 'D:\Send';
CREATE OR REPLACE DIRECTORY d_bkp_sended_files AS 'D:\Bkp_Send';
---GRANT LEITURA E GRAVAÇÃO NOS DIRETÓRIOS (USUÁRIO SYS)
GRANT READ, WRITE ON DIRECTORY d_received_files TO mlxlevesul;
GRANT READ, WRITE ON DIRECTORY d_bkp_received_files TO mlxlevesul;
GRANT READ, WRITE ON DIRECTORY d_sended_files TO mlxlevesul;
GRANT READ, WRITE ON DIRECTORY d_bkp_sended_files TO mlxlevesul;
---CRIA TABELA QUE RECEBERÁ O CONTEÚDO DOS ARQUIVOS XML
CREATE TABLE custom_xml_received(
nome_arquivo VARCHAR2(200),
caminho_arquivo VARCHAR2(4000),
conteudo_arquivo SYS.XMLTYPE,
data_recepcao DATE DEFAULT SYSDATE);
---GRANT GRAVAÇÃO A TABELA AOS USUÁRIOS (USUÁRIO SYS)
GRANT ALL ON custom_xml_received TO mlxlevesul;
---GRANT ACESSO A PACK DBMS_BACKUP_RESTORE (USUÁRIO SYS)
GRANT ALL ON DBMS_BACKUP_RESTORE TO mlxlevesul;
---GRANT LEITURA A VIEW XKRBMSFT
GRANT SELECT ON XKRBMSFT TO mlxlevesul;
---CRIA PROCEDURE PARA SELECIONAR TODOS OS ARQUIVOS DO DIRETÓRIO RECEIVE
CREATE OR REPLACE PROCEDURE custom_list_received_archives
(directory IN VARCHAR2,
v_error_code_arm OUT NUMBER)
IS
PROCNAME CONSTANT VARCHAR2(100) := 'custom_list_received_archives';
ns VARCHAR2(1024);
v_directory VARCHAR2(1024);
v_error_code NUMBER;
v_error_text VARCHAR2(300);
CURSOR c_archive_names IS
SELECT fname_archive, fname_krbmsft
FROM sys.xkrbmsft;
r_archive_names c_archive_names%ROWTYPE;
BEGIN
OPEN c_archive_names;
v_directory := directory;
sys.dbms_backup_restore.searchfiles(v_directory, ns);
v_error_code := 0;
v_error_text := '';
FOR each_file IN (SELECT fname_krbmsft AS name FROM sys.xkrbmsft) LOOP
EXIT WHEN c_archive_names%NOTFOUND;
FETCH c_archive_names INTO r_archive_names;
custom_armazenar_xml(v_file => r_archive_names.fname_archive,
v_caminho => r_archive_names.fname_krbmsft,
v_error_code_out => v_error_code_arm);
IF v_error_code_arm = 0 /*AND r_archive_names.fname_archive IN (SELECT nome_arquivo FROM custom_xml_received)*/ THEN
UTL_FILE.FCOPY(SRC_LOCATION => 'D_RECEIVED_FILES',
SRC_FILENAME => R_ARCHIVE_NAMES.FNAME_ARCHIVE,
DEST_LOCATION => 'D_BKP_RECEIVED_FILES',
DEST_FILENAME => R_ARCHIVE_NAMES.FNAME_ARCHIVE);
UTL_FILE.FREMOVE(LOCATION => 'D_RECEIVED_FILES',
FILENAME => R_ARCHIVE_NAMES.FNAME_ARCHIVE);
END IF;
END LOOP;
CLOSE c_archive_names;
EXCEPTION
WHEN OTHERS THEN
v_error_code := SQLCODE;
v_error_text := SUBSTR(SQLERRM, 1, 300);
END;
---CRIA PROCEDURE PARA INSERÇÃO DO CONTEÚDO DOS ARQUIVOS EM TABELA
CREATE OR REPLACE PROCEDURE custom_armazenar_xml (v_file IN VARCHAR2,
v_caminho IN VARCHAR2,
v_error_code_out OUT NUMBER) AS
v_error_code NUMBER := 0;
v_error_text VARCHAR2(300) := '';
BEGIN
v_error_code_out := 0;
INSERT INTO custom_xml_received
(nome_arquivo, caminho_arquivo, conteudo_arquivo)
VALUES
(v_file, v_caminho, xmltype(bfilename('D_RECEIVED_FILES', v_file),nls_charset_id('AL32UTF8')));
COMMIT;
EXCEPTION
WHEN OTHERS THEN
v_error_code := SQLCODE;
v_error_text := SUBSTR(SQLERRM, 1, 300);
v_error_code_out := v_error_code;
END custom_armazenar_xml;
Tentei fazer com EXTRACT() -- Sem sucesso
SELECT extract(xt.conteudo_arquivo, '/AGENDA/CONTATO/ID').getnumberval() ID,
extract(xt.conteudo_arquivo, '/AGENDA/CONTATO/NOME').getstringval() NOME,
extract(xt.conteudo_arquivo, '/AGENDA/CONTATO/SOBRENOME').getstringval() SOBRENOME,
extract(xt.conteudo_arquivo, '/AGENDA/CONTATO/EMAIL').getstringval() EMAIL,
extract(xt.conteudo_arquivo, '/AGENDA/CONTATO/TELEFONE').getstringval() TELEFONE
FROM custom_xml_received XT/*,
TABLE(XMLSequence(Extract(XT.conteudo_arquivo , '/AGENDA'))) AGENDA, -- Master
TABLE(XMLSequence(Extract(VALUE(AGENDA) , '/AGENDA/CONTATO'))) CONTATO */ -- Detalhes
WHERE XT.nome_arquivo = 'contato001.XML'
SELECT extractvalue(VALUE(AGENDA), '/AGENDA/ID') ID,
extractvalue(VALUE(AGENDA), '/AGENDA/NOME') NOME,
extractvalue(VALUE(AGENDA), '/AGENDA/SOBRENOME') SOBRENOME
FROM custom_xml_received XT,
TABLE(XMLSequence(Extract(XT.conteudo_arquivo , '/AGENDA'))) AGENDA -- Detalhes
WHERE XT.nome_arquivo = 'contato001.XML'
O resultado vem vazio (null)
SELECT extractvalue(xt.conteudo_arquivo, '/AGENDA/CONTATO/ID') ID,
extractvalue(xt.conteudo_arquivo, '/AGENDA/CONTATO/NOME') NOME,
extractvalue(xt.conteudo_arquivo, '/AGENDA/CONTATO/SOBRENOME') SOBRENOME,
extractvalue(xt.conteudo_arquivo, '/AGENDA/CONTATO/EMAIL') EMAIL,
extractvalue(xt.conteudo_arquivo, '/AGENDA/CONTATO/TELEFONE') TELEFONE
FROM custom_xml_received XT/*,
TABLE(XMLSequence(Extract(XT.conteudo_arquivo , '/AGENDA'))) AGENDA, -- Master
TABLE(XMLSequence(Extract(VALUE(AGENDA) , '/AGENDA/CONTATO'))) CONTATO */ -- Detalhes
WHERE XT.nome_arquivo = 'contato001.XML'
<?xml version="1.0"?>
<agenda>
<contato id="1">
<nome>Rodrigo</nome>
<sobrenome>Almeida</sobrenome>
<email>contato@rodrigoalmeida.net</email>
<telefone tipo="res">11 9999 9999</telefone>
<telefone tipo="com">11 8888 8888</telefone>
</contato>
</agenda>
Att,
-
- Rank: Programador Pleno
- Mensagens: 43
- Registrado em: Ter, 20 Mar 2012 11:37 am
- Localização: Campinas
Leandro L. Miranda
Apesar de continuar a pesquisa, até agora não consegui resolver esse problema.
Alguém sabe como pode ser feito isso? Ou conhece uma outra forma?
Obrigado
Alguém sabe como pode ser feito isso? Ou conhece uma outra forma?
Obrigado
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, bom dia... beleza?
Vou dar uma olhada no teu XML e ver se consigo montar o ExtractValue (fiz isso há um tempo atrás rs...).
Agora, uma dúvida:
Vou dar uma olhada no teu XML e ver se consigo montar o ExtractValue (fiz isso há um tempo atrás rs...).
Agora, uma dúvida:
- Teus Directories estão funcionando legal?
-
- Rank: Programador Pleno
- Mensagens: 43
- Registrado em: Ter, 20 Mar 2012 11:37 am
- Localização: Campinas
Leandro L. Miranda
Fala irmão,
Agradeço a atenção.
Está funcionando sim cara, consigo fazer todo o processo de identificação dos arquivos inseridos no diretório, a importação para a tabela XMLType e a transferência dos arquivos para outro diretório quando eles são inseridos na base.
Se faço uma seleção básica na tabela consigo abrir o campo com o conteúdo XML sem problemas também.
Existe algum outro problema que posso estar deixando passar??
Peguei um exemplo pronto na net que da certinho, mas nesse outro padrão não consegui fazer. Não sei se é o padrão do XML ou se é algum erro que estou cometendo.
Exemplo com resultado
Agradeço a atenção.
Está funcionando sim cara, consigo fazer todo o processo de identificação dos arquivos inseridos no diretório, a importação para a tabela XMLType e a transferência dos arquivos para outro diretório quando eles são inseridos na base.
Se faço uma seleção básica na tabela consigo abrir o campo com o conteúdo XML sem problemas também.
Existe algum outro problema que posso estar deixando passar??
Peguei um exemplo pronto na net que da certinho, mas nesse outro padrão não consegui fazer. Não sei se é o padrão do XML ou se é algum erro que estou cometendo.
Exemplo com resultado
SELECT extractvalue(VALUE(FAQ), '/FAQ-LIST/FAQ-ID') "FAQ-ID",
extractvalue(VALUE(QUE), '/QUESTION/QUERY') "QUERY",
extractvalue(VALUE(QUE), '/QUESTION/RESPONSE') "RESPONSE"
FROM custom_xml_received XT,
TABLE(XMLSequence(Extract(XT.conteudo_arquivo , '/FAQ-LIST'))) "FAQ", -- Master
TABLE(XMLSequence(Extract(VALUE(FAQ) , '/FAQ-LIST/QUESTION'))) "QUE" -- Detalhes
WHERE XT.nome_arquivo = 'contato005.XML'
<?xml version="1.0" ?>
- <FAQ-LIST>
<FAQ-ID>01</FAQ-ID>
- <QUESTION>
<QUERY>Question 1</QUERY>
<RESPONSE>Answer goes here.</RESPONSE>
</QUESTION>
- <QUESTION>
<QUERY>Question 2</QUERY>
<RESPONSE>Answer goes here.</RESPONSE>
</QUESTION>
- <QUESTION>
<QUERY>Question 3</QUERY>
<RESPONSE>Answer goes here.</RESPONSE>
</QUESTION>
</FAQ-LIST>
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, fiz um teste aqui e deu certo:
Testa este que postei, se possível e, tenta fazer a adaptação ai.
Qualquer coisa, manda pra gente.
declare
--
vxml xmltype := xmltype('<?xml version="1.0"?>
<agenda>
<contato id="1">
<nome>Rodrigo</nome>
<sobrenome>Almeida</sobrenome>
<email>contato@rodrigoalmeida.net</email>
<telefone tipo="res">11 9999 9999</telefone>
<telefone tipo="com">11 8888 8888</telefone>
</contato>
</agenda>');
vret varchar2(1000);
vret1 varchar2(1000);
--
begin
SELECT extractvalue(value(AGENDA), '/contato/nome') nome
, extractvalue(value(AGENDA), '/contato/email') email
INTO vret
, vret1
FROM TABLE(XMLSequence(Extract(vxml , '/agenda/contato'))) AGENDA;
dbms_output.put_line('Retorno: '||nvl(vret,'-x-')||' ret1: '||vret1);
end;
Qualquer coisa, manda pra gente.
-
- Rank: Programador Pleno
- Mensagens: 43
- Registrado em: Ter, 20 Mar 2012 11:37 am
- Localização: Campinas
Leandro L. Miranda
Maravilha irmão,
Infelizmente ainda não tive tempo pra terminar isso, mas fiz alguns testes básicos e deu certinho.
Muito obrigado,
Abraço.
Infelizmente ainda não tive tempo pra terminar isso, mas fiz alguns testes básicos e deu certinho.
Muito obrigado,
Abraço.
-
- Rank: DBA Pleno
- Mensagens: 248
- Registrado em: Sex, 06 Fev 2009 3:02 pm
- Localização: ERECHIM - RS
Olá,
eu uso a rotina abaixo para ler a NFe:
Att,
Marlon
eu uso a rotina abaixo para ler a NFe:
for c in (SELECT tabela_xml_extract.*
FROM PCN_XML tabela,
XMLTable(
XMLNAMESPACES(DEFAULT 'http://www.portalfiscal.inf.br/nfe')
,'/nfeProc/NFe/infNFe'
PASSING tabela.nota/*campo XML*/
COLUMNS Nota varchar2(15) PATH '/infNFe/ide/nNF/text()',
modelo varchar2(2) PATH '/infNFe/ide/mod/text()',
serie varchar2(2) PATH '/infNFe/ide/serie/text()',
Emissao varchar2(15) PATH '/infNFe/ide/dEmi/text()',
Fornecedor varchar2(18) PATH '/infNFe/emit/CNPJ/text()',
BCNota varchar2(15) PATH '/infNFe/total/ICMSTot/vBC/text()',
IcmsNota varchar2(15) PATH '/infNFe/total/ICMSTot/vICMS/text()',
VlrProdutos varchar2(15) PATH '/infNFe/total/ICMSTot/vProd/text()',
VlrFrete varchar2(15) PATH '/infNFe/total/ICMSTot/vFrete/text()',
ValorIPI varchar2(15) PATH '/infNFe/total/ICMSTot/vIPI/text()',
ValorPIS varchar2(15) PATH '/infNFe/total/ICMSTot/vPIS/text()',
ValorCOFINS varchar2(15) PATH '/infNFe/total/ICMSTot/vCOFINS/text()',
ValorNota varchar2(15) PATH '/infNFe/total/ICMSTot/vNF/text()',
Adicionais varchar2(2000) PATH '/infNFe/infAdic/infCpl/text()',
TipoFrete varchar2(2) PATH '/infNFe/transp/modFrete/text()',
Peso varchar2(15) PATH '/infNFe/transp/vol/pesoB/text()'
) tabela_xml_extract
where registro = ViRegistro) loop
----------*****-----
end loop;
Marlon
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Qui, 18 Jun 2015 10:10 am
- Localização: Bauru/SP
Boa tarde, eu sou novo em plsql e xml, gostaria da ajuda de todos para solucionar meu problema.
Eu tenho o Oracle 11gr2 instalado em um Windows Server 2008.
Preciso configurar o servidor e criar uma procedure que leia o conteúdo do xml e insira as informações nas tabelas correspondentes.
As tabelas são as seguintes:
Eu tenho um xml assim:
Eu tenho que inserir esse xml nas duas tabelas acima.
Como que eu poderia fazer isso usando UTL_FILE, ExtractValue...?
Já testei conforme algumas respostas deste post, mas deram erro...
Muito obrigado pela atenção de todos...
Eu tenho o Oracle 11gr2 instalado em um Windows Server 2008.
Preciso configurar o servidor e criar uma procedure que leia o conteúdo do xml e insira as informações nas tabelas correspondentes.
As tabelas são as seguintes:
CREATE TABLE ALUNO(
ALUNO_ID NUMBER(6,0) PRIMARY KEY,
FIRST_NAME VARCHAR2(150),
LAST_NAME VARCHAR2(150),
EMAIL VARCHAR2(150),
PHONE_NUMBER VARCHAR2(150),
CPF NUMBER(11,0)
);
---------------------------------------------------
CREATE TABLE CURSO(
CURSO_ID NUMBER(6,0) PRIMARY KEY,
ALUNO_ID NUMBER(6,0),
MATERIA_ID NUMBER(6,0),
NOTA NUMBER(4,2),
DATAHORA DATE
);
<?xml version="1.0" encoding="windows 1252" ?>
<listaalunos>
<aluno>
<id>1001</id>
<firstname>HUGO</firstname>
<lastname>GELADEIRA</lastname>
<email>hugo@hotmail.com</email>
<phone>988665522</phone>
<cpf>22722722764</cpf>
<curso_id>101</curso_id>
<idmateria>13</idmateria>
<nota>8,75</nota>
<data>14/07/2015</data>
</aluno>
<aluno>
<firstname>RODRIGO</firstname>
<lastname>TESTE</lastname>
<email>rodrigo@hotmail.com</email>
<phone>988772211</phone>
<cpf>25825825897</cpf>
<curso_id>102</curso_id>
<idmateria>12</idmateria>
<nota>9,75</nota>
<data>14/07/2015</data>
</aluno>
</listaalunos>
Como que eu poderia fazer isso usando UTL_FILE, ExtractValue...?
Já testei conforme algumas respostas deste post, mas deram erro...
Muito obrigado pela atenção de todos...
Boa tarde a todos,
Estou com uma dúvida na criação de uma consulta no Banco de Dados ORACLE.
Na tabela (t_parameters) no banco tem um campo (table_value) que contém informações em XML, e gostaria de trazer o valor mais atual do link de acordo com a velocidade.
P.S.: O campo com a data de criação do XML é "create_date".
Abaixo como está guardado a informação XML no campo da tabela.
O select que eu criei está me dando erro e gostaria da ajuda de vocês da criação da consulta.
Segue abaixo a minha consulta que está dando erro:
Estou com uma dúvida na criação de uma consulta no Banco de Dados ORACLE.
Na tabela (t_parameters) no banco tem um campo (table_value) que contém informações em XML, e gostaria de trazer o valor mais atual do link de acordo com a velocidade.
P.S.: O campo com a data de criação do XML é "create_date".
Abaixo como está guardado a informação XML no campo da tabela.
<Table>
<TableStructure>
<Col Name="Largura_Banda_Kbps" Index="Y" Mandatory="N" Type="Text" DefaultValue="" />
<Col Name="Terrestre_Valor_Mensal" Index="N" Mandatory="N" Type="Number" DefaultValue="" />
<Col Name="Terrestre_Valor_Instalacao" Index="N" Mandatory="N" Type="Number" DefaultValue="" />
<Col Name="Satélite_Valor_Mensal" Index="N" Mandatory="N" Type="Number" DefaultValue="" />
<Col Name="Satélite_Valor_Instalacao" Index="N" Mandatory="N" Type="Number" DefaultValue="" />
</TableStructure>
<TableElements>
<Elem>
<Largura_Banda_Kbps>500000 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>114908.1</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>8448.15</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>250000 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>70495.29</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>8448.15</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>100000 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>20395.4</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>1570.55</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>68000 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>14512.71</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>1570.55</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>32000 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>12113.11</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>1570.55</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>16384 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>6759.65</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>1570.55</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>8192 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>4783.93</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>1570.55</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>4096 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>2414.06</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>1570.55</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>0</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>0</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>2048 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>1208.29</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>816.68</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>13497.83</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>3726.65</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>1024 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>823.24</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>816.68</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>9145.01</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>3726.65</Satélite_Valor_Instalacao>
</Elem>
<Elem>
<Largura_Banda_Kbps>512 Kbps</Largura_Banda_Kbps>
<Terrestre_Valor_Mensal>641.77</Terrestre_Valor_Mensal>
<Terrestre_Valor_Instalacao>816.68</Terrestre_Valor_Instalacao>
<Satélite_Valor_Mensal>6909.25</Satélite_Valor_Mensal>
<Satélite_Valor_Instalacao>3726.65</Satélite_Valor_Instalacao>
</Elem>
</TableElements>
</Table>
Segue abaixo a minha consulta que está dando erro:
SELECT
EXTRACTVALUE(VALUE(ELEM), '/Elem/Terrestre_Valor_Mensal') VALOR
FROM
t_parameters param,
TABLE(XMLSEQUENCE(EXTRACT(param.table_value, '/Table/TableElements/Elem'))) ELEM
WHERE
param.parameter_name = 'Lote 1/Item 1'
AND param.table_value IS NOT NULL
AND param.parameter_id = 1880
Eu sei que o post é bem antigo, mas alguém conseguiu solucionar a duvida final do nosso amigo Nelson ?
quando ele diz que quando eletento juntar a NRONNF com o PESO (por exemplo) o resultado fica duplicado. ??
estou com o mesmo problema.
quando ele diz que quando eletento juntar a NRONNF com o PESO (por exemplo) o resultado fica duplicado. ??
estou com o mesmo problema.

-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes