Leitura e Gravação em Arquivo Texto no Oracle

Veja neste artigo procedimentos e exceções do package-padrão UTL_FILE.

Os comandos necessários para o desenvolvimento de rotinas para ler e escrever dados em arquivos do tipo texto encontram-se na package-padrão UTL_FILE, disponível a partir da versão 7.3 do Oracle. Porém sua implementação estará sujeita às permissões do sistema operacional e do banco de dados, sendo que os diretórios que podem ser acessados para leitura e gravação devem ser especificados no parâmetro de inicialização, como UTL_FILE_DIR = nome_do_diretório ou . Observação: especifica que qualquer diretório está acessível para as operações com arquivos.

 Procedimentos da package UTL_FILE

Funcionalidade

FOPEN

abre um arquivo para entrada ou saída, criando um arquivo de saída caso o arquivo especificado não exista

IS_OPEN

indica se determinado arquivo está ou não aberto

FCLOSE

fecha um arquivo

FCLOSE_ALL

fecha todos os arquivos abertos

GET_LINE

lê uma linha de um arquivo aberto

PUT

escreve uma linha no arquivo. Não acrescenta automaticamente o caractere de fim de linha

PUT_LINE

escreve uma linha no arquivo, acrescentando automaticamente o caractere de fim de linha

NEW_LINE

inclui o caractere de fim de linha no arquivo, o que irá gerar uma nova linha em branco

FFLUSH

escreve, fisicamente, todas as pendências para um arquivo

 

Exceções package UTL_FILE

Controle

INVALID_PATH

diretório ou nome de arquivo inválido

INVALID_MODE

o parâmetro de modo de abertura é inválido

INVALID_FILEHANDLE

especificador de arquivo inválido

INVALID_OPERATION

o arquivo não pode ser aberto ou a operação é inválida

READ_ERROR

ocorreu um erro do sistema operacional durante a leitura de um arquivo

WRITE_ERROR

ocorreu um erro do sistema operacional durante a gravação de um arquivo

INTERNAL_ERROR

erro não especificado no PL/SQL

NO_DATA_FOUND

nesse caso, é disparada quando o fim do arquico é encontrado em processamento de leitura seqüencial de um arquivo de texto

Roteiro para geração de arquivo texto

DECLARE arquivo_saida UTL_File.File_Type; Cursor Cur_Linha is < Definição do select que traz a linha completa concatenada a ser gravada > BEGIN arquivo_saida := UTL_File.Fopen('caminho completo’,’ nm arquivo', 'w');    For Reg_Linha in Cur_linha Loop UTL_File.Put_Line(arquivo_saida, Reg_linha.linha); End Loop; UTL_File.Fclose(arquivo_saida);    Dbms_Output.Put_Line('Arquivo gerado com sucesso.'); EXCEPTION WHEN UTL_FILE.INVALID_OPERATION THEN Dbms_Output.Put_Line(‘Operação inválida no arquivo.');  UTL_File.Fclose(arquivo_saida;) WHEN UTL_FILE.WRITE_ERROR THEN Dbms_Output.Put_Line(‘Erro de gravação no arquivo.'); UTL_File.Fclose(arquivo_saida); WHEN UTL_FILE.INVALID_PATH THEN Dbms_Output.Put_Line(‘Diretório inválido.'); class=style111>               UTL_File.Fclose(arquivo_saida); WHEN UTL_FILE.INVALID_MODE THEN Dbms_Output.Put_Line(‘Modo de acesso inválido.'); class=style111>  UTL_File.Fclose(arquivo_saida);  WHEN Others THEN class=style111> Dbms_Output.Put_Line('Problemas na geração do arquivo.'); class=style111>               UTL_File.Fclose(arquivo_saida); END;

Roteiro para leitura de arquivo texto

DECLARE     arquivo_ler UTL_File.File_Type; Linha                               Varchar2(100); BEGIN   arquivo_ler := UTL_File.Fopen('caminho completo’,’nm arquivo', 'r'); Loop UTL_File.Get_Line(arquivo_ler, Linha);                         Manipulação da linha lida End Loop; UTL_File.Fclose(arquivo_ler); Dbms_Output.Put_Line('Arquivo processado com sucesso.'); EXCEPTION WHEN No_data_found THEN UTL_File.Fclose(arquivo_ler); Commit; WHEN UTL_FILE.INVALID_PATH THEN Dbms_Output.Put_Line(‘Diretório inválido.');  UTL_File.Fclose(arquivo_ler) WHEN Others THEN Dbms_Output.Put_Line ('Problemas na leitura do arquivo.'); UTL_File.Fclose(arquivo_ler); END;

Aprenda mais sobre SQL

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados