Enviar arquivo para diretorio

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
fernando84
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 15 Abr 2019 10:16 am

Olá, tenho uma duvida sobre o uso de UTL_FILE_DIR. Preciso subir um arquivo pdf para um diretorio criado. Estou usando o codigo a seguir:

Selecionar tudo

declare
arquivo utl_file.file_type;
v_linha varchar2(4000);

begin
--ESCREVE
arquivo := utl_file.fopen('DIR_CERT_PEP', 'TESTEDBA1.TXT', 'W');

utl_file.put_line(arquivo, 'TESTE');

utl_file.put_line(arquivo, 'TESTE1');

utl_file.put_line(arquivo, 'TESTE2');

utl_file.put_line(arquivo, 'TESTE3');

utl_file.fclose(arquivo);

--LER

arquivo := utl_file.fopen('DIR_CERT_PEP', 'TESTEDBA1.TXT', 'R');

loop

begin

utl_file.get_line(arquivo, v_linha);

dbms_output.put_line(v_linha);

exception

when no_data_found then

utl_file.fclose(arquivo);

exit;

end;

end loop;

end;
Quando clico no botão para adicionar o arquivo ele não abre nada. Utilizo o oracle forms e preciso enviar este arquivo. Onde estou errado?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

UTL_FILE é utilizado pra ler e gravar arquivos dentro do servidor Oracle.
(Funciona dentro do servidor)

Se você quer abrir uma caixa de diálogo no Forms, escolher um arquivo e depois ler ou gravar, então você deve usar TEXT_IO.

http://glufke.net/oracle/viewtopic.php? ... ght=textio
http://glufke.net/oracle/viewtopic.php?f=4&t=6739

Até a versão 6i, o Forms era Cliente/Servidor.
Então a gente usava algo assim:

Selecionar tudo

PROCEDURE WRITE_ITEM_BLOCK (FILENAME IN VARCHAR2) IS 
  MYFILE TEXT_IO.FILE_TYPE; 
  CUR_REC NUMBER; 
BEGIN 
  GO_BLOCK('S_ITEM'); 
  CUR_REC := :SYSTEM.CURSOR_RECORD; 
  IF :SYSTEM.BLOCK_STATUS != 'NEW' THEN 
    FIRST_RECORD; 
    MYFILE := TEXT_IO.FOPEN(FILENAME, 'W'); 
    TEXT_IO.PUTF(MYFILE,'Item_ID,Proudct_ID,Description'||CHR(10)); 
    LOOP 
      TEXT_IO.PUTF(MYFILE, TO_CHAR(:S_ITEM.ITEM_ID)||','); 
      TEXT_IO.PUTF(MYFILE, TO_CHAR(:S_ITEM.PRODUCT_ID)||','); 
      TEXT_IO.PUTF(MYFILE, :S_ITEM.DESCRIPTION||','); 
      TEXT_IO.PUTF(MYFILE, CHR(10)); 
      EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE'; 
      NEXT_RECORD; 
    END LOOP; 
    TEXT_IO.FCLOSE(MYFILE); 
  END IF; 
  GO_RECORD(CUR_REC); 
END;
Se você está usando Forms WEB (10g, por exemplo), aí você precisa usar WEBUTIL.
Exemplo:

Selecionar tudo

PROCEDURE WRITE_ITEM_BLOCK (FILENAME IN VARCHAR2) IS 
  MYFILE CLIENT_TEXT_IO.FILE_TYPE; 
  CUR_REC NUMBER; 
BEGIN 
  GO_BLOCK('S_ITEM'); 
  CUR_REC := :SYSTEM.CURSOR_RECORD; 
  IF :SYSTEM.BLOCK_STATUS != 'NEW' THEN 
    FIRST_RECORD; 
    MYFILE := CLIENT_TEXT_IO.FOPEN(FILENAME, 'W'); 
    CLIENT_TEXT_IO.PUTF(MYFILE,'Item_ID,Proudct_ID,Description'||CHR(10)); 
    LOOP 
      CLIENT_TEXT_IO.PUTF(MYFILE, TO_CHAR(:S_ITEM.ITEM_ID)||','); 
      CLIENT_TEXT_IO.PUTF(MYFILE, TO_CHAR(:S_ITEM.PRODUCT_ID)||','); 
      CLIENT_TEXT_IO.PUTF(MYFILE, :S_ITEM.DESCRIPTION||','); 
      CLIENT_TEXT_IO.PUTF(MYFILE, CHR(10)); 
      EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE'; 
      NEXT_RECORD; 
    END LOOP; 
    CLIENT_TEXT_IO.FCLOSE(MYFILE); 
  END IF; 
  GO_RECORD(CUR_REC); 
END;
É isso que você quer fazer ?
Responder
  • Informação
  • Quem está online

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