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
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 20 visitantes