PACOTE UTL_FILE DO ORACLE
O pacote UTL_FILE é um conjunto de componentes que tem como função permitir o acesso ou geração de arquivos externos ao banco de dados.
Artigos Banco de Dados PACOTE UTL_FILE DO ORACLE
O pacote UTL_FILE é um conjunto de componentes que tem como função permitir o acesso ou geração de arquivos externos ao banco de dados. Um exemplo seria importarmos scripts em SQL ou PL/SQL para o nosso sistema. O pacote é constituído de 18 componentes, nos quais são distribuídos da seguinte maneira: 7 Exception, 2 Function, 8 Procedure e 1 Type.
Para utilizarmos o pacote, teremos que interromper os serviços do banco de dados e modificar o arquivo initXE.ora (ORACLE 10G Express Edition), onde iremos acrescentar o parâmetro UTL_FILE_DIR, afim de determinar quais os diretórios do sistema está livre para o acesso.
Primeiramente, vamos informar ao banco de dados que podemos gravar e recuperar dados do sistema operacional, através dos seguintes passos:
--Conectar como DBA
--Fechar o banco de dados
--Iniciar o banco de dos sem abrir
--Alterar o parâmetro UTL_FILE_DIR:
SET UTL_FILE_DIR = '*'
Agora vamos finalizar e inicializar novamente o banco de dados para assumir os novos parâmetros:
Ainda conectado com o usuário SYS (CONNECT / AS SYSDBA) dê privilégio de EXECUTE no pacote UTL_FILE para o usuário HR:
Podemos deixar para que todos os usuários tenham o privilégio:
Podemos consultar todos os componentes do pacote: DESC UTL_FILE.
COMANDOS UTL_FILE
nesse caso, é disparada quando o fim do arquivo é encontrado em processamento de leitura seqüencial de um arquivo de texto
Exemplo: Roteiro para geração de arquivo texto:
Cursor Cur_Linha is
--Definição do select que traz a linha completa concatenada a ser gravada
arquivo_saida := UTL_File.Fopen('caminho completo','nm arquivo', 'w');
Exemplo: Roteiro para leitura de arquivo texto:
Linha Varchar2(100);
arquivo_ler := UTL_File.Fopen('caminho completo','nm arquivo', 'r');
-- Manipulação da linha lida
EXEMPLO PRÁTICO DE UTL_FILE
1. Conectar com o usuário SYSTEM: CONNECT SYSTEM/SENHA;
2. Criar diretório: CREATE DIRECTORY DIRETORIO AS 'C:\DIRETORIO';
3. Ir no Windows Explorer e criar uma pasta chamada DIRETÓRIO na unidade C;
4. Conceder privilégio de leitura e gravação no diretório criado:
GRANT READ, WRITE ON DIRECTORY DIRETORIO TO HR;
5. Conectar com o usuário HR: CONNECT HR/HR;
6. Criar o procedimento abaixo:
V_LINHA VARCHAR2(2000) := '';
V_ARQUIVO := UTL_FILE.FOPEN('DIRETORIO', 'ARQUIVO.TXT', 'W');
V_LINHA := 'LINHA ' || i || '!!';
UTL_FILE.PUT_LINE(V_ARQUIVO, V_LINHA);
UTL_FILE.FCLOSE(V_ARQUIVO);
7. Vá a unidade C:\DIRETÓRIO e visualize o conteúdo do arquivo.
Espero que tenham gostado. Próximo artigo vamos criar uma arquivo XML utilizando uma PL/SQL para extrair os dados do banco de dados. Até lá!