Pular para o conteúdo

O Grande Espetáculo do UTL_FILE no Oracle PL/SQL

O Grande Espetáculo do UTL_FILE no Oracle PL/SQL

Introdução ao UTL_FILE

Prepare-se para a grande tenda do Oracle PL/SQL, onde o UTL_FILE é a estrela principal! Este pacote é o mestre de cerimônias quando se trata de ler e escrever arquivos. Não é apenas um truque de mágica, é pura habilidade técnica!

Exemplos Práticos de Utilização com Simulação de Execução

O Número de Abertura com Criação de Arquivos
DECLARE
  v_file_handler UTL_FILE.FILE_TYPE;
BEGIN
  v_file_handler := UTL_FILE.FOPEN('DIR_EXEMPLO', 'novo_arquivo.txt', 'W');
  UTL_FILE.PUT_LINE(v_file_handler, 'Este é o início de um grande espetáculo!');
  UTL_FILE.FCLOSE(v_file_handler);
  DBMS_OUTPUT.PUT_LINE('Arquivo novo_arquivo.txt criado com sucesso.');
END;
/

Resultado

Arquivo novo_arquivo.txt criado com sucesso.
Abrindo o Circo
DECLARE
  v_file_handler UTL_FILE.FILE_TYPE;
BEGIN
  v_file_handler := UTL_FILE.FOPEN('DIR_EXEMPLO', 'exemplo.txt', 'W');
  UTL_FILE.PUT_LINE(v_file_handler, 'Bem-vindo ao espetáculo dos arquivos!');
  UTL_FILE.FCLOSE(v_file_handler);
  DBMS_OUTPUT.PUT_LINE('Arquivo exemplo.txt aberto e escrito com sucesso.');
END;
/

Resultado

Arquivo exemplo.txt aberto e escrito com sucesso.
O Grande Truque de Leitura
DECLARE
  v_line VARCHAR2(200);
  v_file_handler UTL_FILE.FILE_TYPE;
BEGIN
  v_file_handler := UTL_FILE.FOPEN('DIR_EXEMPLO', 'exemplo.txt', 'R');
  LOOP
    BEGIN
      UTL_FILE.GET_LINE(v_file_handler, v_line);
      DBMS_OUTPUT.PUT_LINE(v_line);
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        EXIT;
    END;
  END LOOP;
  UTL_FILE.FCLOSE(v_file_handler);
END;
/

Resultado

Bem-vindo ao espetáculo dos arquivos!
O Desafio do Arquivo Grande
DECLARE
  v_file_handler UTL_FILE.FILE_TYPE;
  v_buffer VARCHAR2(32767);
BEGIN
  v_file_handler := UTL_FILE.FOPEN('DIR_EXEMPLO', 'arquivo_grande.log', 'R');
  LOOP
    BEGIN
      UTL_FILE.GET_LINE(v_file_handler, v_buffer, 32767);
      DBMS_OUTPUT.PUT_LINE(v_buffer);
    EXCEPTION
      WHEN UTL_FILE.READ_ERROR THEN
        EXIT;
    END;
  END LOOP;
  UTL_FILE.FCLOSE(v_file_handler);
END;
/

Resultado

Linha 1
Linha 2
Linha 3
Linha 4
Linha 5
Linha 6
Linha 7
Linha 8
Linha 9
Linha 10
Linha 11
Linha 12
Linha 13
A Dança dos Arquivos Temporários
DECLARE
  v_file_temp UTL_FILE.FILE_TYPE;
BEGIN
  v_file_temp := UTL_FILE.FOPEN('DIR_TEMP', 'temp.txt', 'W', 32767);
  UTL_FILE.PUTF(v_file_temp, 'Este é um arquivo temporário com a data: %s', TO_CHAR(SYSDATE, 'DD-MM-YYYY'));
  UTL_FILE.FCLOSE(v_file_temp);
  DBMS_OUTPUT.PUT_LINE('Arquivo temp.txt criado com a data atual.');
END;
/

Resultado

Arquivo temp.txt criado com a data atual.
O Finale com Renomeação e Exclusão
DECLARE
  v_file_name VARCHAR2(100) := 'exemplo.txt';
  v_file_rename VARCHAR2(100) := 'exemplo_renomeado.txt';
BEGIN
  UTL_FILE.FRENAME('DIR_EXEMPLO', v_file_name, 'DIR_EXEMPLO', v_file_rename, TRUE);
  DBMS_OUTPUT.PUT_LINE('Arquivo ' || v_file_name || ' renomeado para ' || v_file_rename || '.');
  UTL_FILE.FREMOVE('DIR_EXEMPLO', v_file_rename);
  DBMS_OUTPUT.PUT_LINE('Arquivo ' || v_file_rename || ' removido com sucesso.');
END;
/

Resultado

Arquivo exemplo.txt renomeado para exemplo_renomeado.txt.
Arquivo exemplo_renomeado.txt removido com sucesso.

Conclusão

E assim, senhoras e senhores, terminamos nossa apresentação estelar! O UTL_FILE é o verdadeiro artista do Oracle PL/SQL, capaz de criar, ler, escrever e até mesmo fazer arquivos desaparecerem. Não se esqueça de aplaudir!

Referências

Natanael Freitas

Natanael Freitas

E aí, pessoal! Sou o Natanael Freitas, o cara que curte desbravar o mundo do PL/SQL. Não sou nenhum expert, mas me viro bem nas linhas de código desse universo. A verdade é que sou mais íntimo de bancos de dados do que de muitas pessoas por aí – sério! Quando não tô quebrando a cabeça com triggers e stored procedures, tô por aí fuçando a web em busca de tudo que é novidade nesse mundão tech. Às vezes, me pego dando uma aula rápida sobre PL/SQL pros colegas, na tentativa de descomplicar essa coisa toda. Meu dia a dia é basicamente sorrisos, café (sim, sou desses que não larga a caneca!) e resolvendo problemas nos códigos. Não sou nenhum Picasso, mas acho que consigo fazer umas artes por aí. Então, se precisar de ajuda com PL/SQL ou só quiser bater um papo sobre o assunto, tamo aí!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress