utl_file.get_line com mais de 3276.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Ter, 19 Mar 2013 5:47 pm

Boa tarde, pessoal!

Estou usanto o utl_file.get_line para ler um arquivo .xml, mas o mesmo esta estourando. Alguém conhece outro processo para ler um arquivo XML para resolver esse problema?

At.:
carloscsilva

" Pense diferente! - "

Mensagemem Qua, 20 Mar 2013 8:36 am

Bom dia amigo.

Apesar de não conhecer muito sobre o assunto (XML - Oracle), sei que existem bibliotecas específicas para trabalhar com esse formato de arquivo.

Dá uma olhada nos seguintes sites e vê se pode lhe ajudar:



http://byclaudio.wordpress.com/2012/03/ ... no-oracle/

http://eduardoarruda.wordpress.com/2009 ... as-oracle/

http://www.oracle.com/pls/db112/search? ... h&word=xml



Qualquer coisa, via postando ai para ver se algum parceiro aqui do fórum consegue lhe ajudar esclarecer suas dúvidas.

Abç.,
Tinho
Localização: São Paulo - SP

Mensagemem Qui, 21 Mar 2013 9:01 am

Valeu, tinho! Era isso mesmo ... segue o Código abaixo, caso alguém precise de algum exemplo.


Código: Selecionar todos
create or replace procedure prc_grava_xml(i_nom_diretorio in varchar2,
                                          i_nom_arquivo   in varchar2,
                                          io_errcode      in out number,
                                          io_errmsg       in out varchar2) is
     w_arquivo          Bfile;
     w_conteudo      CLOB;
     w_xml               clob;
     w_error            exception;
begin
    -- verifica se o ditorio foi informado...
    if i_nom_diretorio is null then
       io_errcode:= 100;
       io_errmsg:= 'Não possui diretorio informado!';
      raise w_error;
    end if;
    -- verifica se o arquivo foi informado...
    if i_nom_arquivo is null then
       io_errcode:= 100;
       io_errmsg:= 'Não esta informado o nome do arquivo!';
      raise w_error;
    end if;
   
    -- cria ou replica o diretorio
    w_arquivo := bfilename(i_nom_diretorio,i_nom_arquivo);
    -- O procedimento FileOpen abre a BFILE para acesso somente leitura ...
    DBMS_LOB.fileOpen(w_arquivo,dbms_lob.file_readonly);
    -- cria um temporário BLOB ou CLOB e seu índice correspondente no seu tablespace temporário padrão ...
    DBMS_LOB.createtemporary(w_conteudo,TRUE,DBMS_LOB.session);
    -- Este procedimento copia a totalidade ou uma parte de, um LOB fonte externa (BFILE) para um destino LOB interno ..
    DBMS_LOB.loadFromFile(w_conteudo,w_arquivo,DBMS_LOB.getLength(w_arquivo),1,1);
    -- Este procedimento fecha um BFILE que já foi aberto através do localizador de entrada.
    DBMS_LOB.fileClose(w_arquivo);
                         -- Função estática para criar e retornar um XMLType exemplo.
    w_xml := w_conteudo; -- XMLType.createxml(w_conteudo);
   
    begin
        insert into xml_confirmation(xml_con_codigo,xml_con_dados) values(seq_xml_confirmation.nextval,w_xml);
        commit;
      exception
          when others then
            io_errcode:= sqlcode;
            io_errmsg:= 'Erro ao gerar insert na prc_grava_xml';
    end;
   
  exception
     when w_error then
        io_errcode:= io_errcode;
        io_errmsg := io_errmsg;
     when others then
        null;
end;
carloscsilva

" Pense diferente! - "


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para PL/SQL

    Quem está online

    Usuários navegando neste fórum: Bing [Bot] e 8 visitantes

cron