terça-feira, 13 de maio de 2014

Gerar Arquivo xml PL/SQL

create or replace procedure gerar_xml is

  v_file Utl_File.File_Type;
  v_xml  CLOB;

BEGIN
  DECLARE

    v_file Utl_File.File_Type;
    v_xml  CLOB;
    v_more BOOLEAN := TRUE;
    v_erro varchar2(100);
    v_conteudo_arquivo sys.xmltype;

  BEGIN
    -- Consulta na variavel V_XML
    V_XML := DBMS_XMLQUERY.getXML('select * from tabela');


    -- IMP é o directory do oracle, arquivo.XML
      V_FILE := UTL_FILE.fopen('IMP', 'arquivo.XML', 'w');
    WHILE V_MORE LOOP
      UTL_FILE.PUT(V_FILE, SUBSTR(V_XML, 1, 32767));
  
      IF LENGTH(V_XML) > 32767 THEN
        V_XML := SUBSTR(V_XML, 32768);
      ELSE
        V_MORE := FALSE;
      END IF;
    END LOOP;

    UTL_FILE.fclose(V_FILE);

  EXCEPTION
    WHEN OTHERS THEN
    v_erro := Substr(SQLERRM, 1, 255);
    --tabela log_temp é o local para gravar o erro gerado pelo exception
    insert into log_temp
    values (v_erro,sysdate);
commit;
      --DBMS_OUTPUT.PUT_LINE(Substr(SQLERRM, 1, 255));
      Utl_File.FClose(v_file);
  
  END;

END;

Um comentário:

  1. Cristiano, parabéns, suas dicas ajudam muito.
    Gostaria de uma ajuda, recebi uma demanda para fazer em pl/sql, tem uma página web que recebe um arquivo xml em um input file e tenho que pegar esse arquivo para ler algumas informações e gravar essas informações especificas e também o arquivo xml em uma tabela no db. Não tenho ideia de como ler esse arquivo. Teria uma dica?
    Pensei em colocar o arquivo em uma variável e ler essa variável, mas não consegui, já vasculhei a internet até na comunidade Oracle e nada.

    ResponderExcluir