arquivo xml

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
rafaelfrocha
Rank: Programador Sênior
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?

Selecionar tudo

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 
Não dá pra sintetizar tudo em um unico Path não?
ex:

Selecionar tudo

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 
só uma idéia! verifica aí se funciona...
Nelson
Rank: Programador Júnior
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 ????

Selecionar tudo

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
só mais uma vez, e ... acredito que essa fase vai terminar......
grato
Nelson
Rank: Programador Júnior
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 ????

Selecionar tudo

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 
só mais uma vez, e ... acredito que essa fase vai terminar......
grato
williankleber
Rank: Programador Júnior
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:

Selecionar tudo

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 
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í!
Nelson
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 09 Jun 2009 9:44 am
Localização: São Paulo

corretíssimo. Valeo.
Brigadão
Nelson
Rank: Programador Júnior
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 é:

Selecionar tudo

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 
não mostra o nItem e o xProd .....
williankleber
Rank: Programador Júnior
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?
williankleber
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 02 Abr 2008 2:40 pm
Localização: Joinville - SC
Contato:

Selecionar tudo

 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 
Nelson
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 09 Jun 2009 9:44 am
Localização: São Paulo

segue um trecho ..

Selecionar tudo

<?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>
lembrando que pode ter (n) itens
williankleber
Rank: Programador Júnior
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!
Nelson
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 09 Jun 2009 9:44 am
Localização: São Paulo

Query,

Selecionar tudo

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/'
deu esse erro !!!!!!
Nelson
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 09 Jun 2009 9:44 am
Localização: São Paulo

na linha

Selecionar tudo

TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod 
retirei o " / "

Selecionar tudo

TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod 
e não apareceu nada

grato
Nelson
williankleber
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 02 Abr 2008 2:40 pm
Localização: Joinville - SC
Contato:

Selecionar tudo

TABle(XMLSequence(extract(VALUE(xmlNFE),'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod 
RETIRA O "VALUE(xmlNFE)" DESSA TABELA, TE PASSEI ERRADO! DESCULPE. É QUE É MEIO DIFICIL SEM UMA BASE PARA SIMULAR!

ASSIM O CÍDIGO FICARIA ASSIM:

Selecionar tudo

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 
TENTA aí
Nelson
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 09 Jun 2009 9:44 am
Localização: São Paulo

Bom dia.
na linha :

Selecionar tudo

TABle(XMLSequence(extract(xmlNFE,'/infNFe/det/nItem/prod/','xmlns="http://www.portalfiscal.inf.br/nfe"'))) xmlNFE_prod
deu :

Selecionar tudo

ORA-00904: "XMLNFE": invalid identifier
grato
Nelson
jader.barros
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 10 Jun 2010 2:43 pm
Localização: AL

Selecionar tudo

<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>
Avatar do usuário
fsitja
Rank: OraSauro
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

Umm.. ok?

:shock:


Não entendi.
bertosro
Rank: Analista Júnior
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

Olá Mestres, Boa Noite.

Por favor podem me ajudar no codigo abaixo, MESTRE x DETALHE não retorna dados no detalhe.

Selecionar tudo

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;
Se executar o codigo acima podem ver que o retorno02 retorna nulo.
:-o
Avatar do usuário
fsitja
Rank: OraSauro
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

Olá,

Você poderia postar o que você precisa que seja retornado para esse exemplo?
bertosro
Rank: Analista Júnior
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

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.
Avatar do usuário
fsitja
Rank: OraSauro
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

Executei o seu código e retornou o seguinte:

Selecionar tudo

01 006128021
02 
Você quer que retorne isso abaixo??

Selecionar tudo

01 006128021
02 006128021
Ou entendi errado?

Se não for isso estou perdido, e acho que não sou o único :oops:

Daria pra postar exatamente o que você quer ver?
leandromiranda87
Rank: Programador Pleno
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

Selecionar tudo

---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;
--ETAPA LEITURA DAS TAGS
Tentei fazer com EXTRACT() -- Sem sucesso

Selecionar tudo

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'
ExtractValue() -- Sem sucesso

Selecionar tudo

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 mais próximo que cheguei até agora:
O resultado vem vazio (null)

Selecionar tudo

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'
Segue também exemplo do arquivo XML

Selecionar tudo

<?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>
Podem me ajudar com este problema?

Att,
leandromiranda87
Rank: Programador Pleno
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
Trevisolli
Moderador
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

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:
  • Teus Directories estão funcionando legal?
Você chega à acessar o XML ?
leandromiranda87
Rank: Programador Pleno
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

Selecionar tudo

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'

Selecionar tudo

  <?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>
Trevisolli
Moderador
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

Brother, fiz um teste aqui e deu certo:

Selecionar tudo

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;
 
Testa este que postei, se possível e, tenta fazer a adaptação ai.
Qualquer coisa, manda pra gente.
leandromiranda87
Rank: Programador Pleno
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.
marlonpasquali
Rank: DBA Pleno
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:

Selecionar tudo

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;
Att,
Marlon
shinobyghost
Rank: Estagiário Pleno
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:

Selecionar tudo

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
);
 
Eu tenho um xml assim:

Selecionar tudo

<?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>
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...
Preazito
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 02 Mai 2016 2:36 pm

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.

Selecionar tudo

<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>
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:

Selecionar tudo

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
dcp
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Ter, 17 Set 2013 11:02 am

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. :-o
Responder
  • Informação
  • Quem está online

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