A package FND_FILE é utilizada para escrever no log e/ou saída de concurrents.
Um programa concorrente bem desenvolvido necessita do extenso uso dessa package, quanto mais detalhes fornecidos no log e saída, mais fácil será a identificação dos detalhes da execução do programa, seja para acompanhar o andamento do processo ou na resolução de problemas.
Ela suporta um buffer máximo de linha de 32K, tanto para log quanto para saída.
Nesse artigo vou abordar:
- FND_FILE.PUT
- FND_FILE.PUT_LINE
- FND_FILE.NEW_LINE
- FND_FILE.PUT_NAMES
- FND_FILE.CLOSE
- Exceções Geradas
Fique comigo até o fim desse artigo para saber como dominar o uso da package FND_FILE.
FND_FILE.PUT
A FND_FILE.PUT escreve no log ou saída do concurrent, dependendo do parâmetro que você passar.
A procedure PUT escreve sem adicionar o caractere de nova linha, ou seja, se a posição não estiver numa nova linha, ela vai escrever junto com o texto atual, concatenando.
A FND_FILE.PUT possui dois parâmetros:
- which (IN): Identifica se será escrito no log ou saída do programa concorrente, aqui utilizamos as constantes FND_FILE.LOG para log e FND_FILE.OUTPUT para saída.
- buff (IN): Texto que será escrito
FND_FILE.PUT(FND_FILE.LOG, 'Teste de mensagem'); |
Como a procedure PUT não adiciona uma nova linha antes de escrever, geralmente é utilizada junto com a procedure NEW_FILE (Falarei dela logo a seguir).
FND_FILE.NEW_LINE
A procedure FND_FILE.NEW_LINE adiciona novas linhas no log ou saída do concurrent.
Ela possui dois parâmetros:
- which (IN): Identifica se será escrito no log ou saída do programa concorrente, aqui utilizamos as constantes FND_FILE.LOG para log e FND_FILE.OUTPUT para saída.
- lines (IN): Número de linhas a escrever (Opcional).
FND_FILE.NEW_LINE(FND_FILE.LOG); -- Adiciona 1 linha em branco |
FND_FILE.NEW_LINE(FND_FILE.LOG, 3); -- Adiciona 3 linhas em branco |
FND_FILE.PUT_LINE
A procedure FND_FILE.PUT_LINE é como se fosse uma junção da PUT com a NEW_LINE, ou seja, antes de escrever o texto, ela sempre adiciona uma linha.
Também possui dois parâmetros:
- which (IN): Identifica se será escrito no log ou saída do programa concorrente, aqui utilizamos as constantes FND_FILE.LOG para log e FND_FILE.OUTPUT para saída.
- buff (IN): Texto que será escrito
FND_FILE.PUT_LINE(FND_FILE.LOG, 'Teste de mensagem'); |
FND_FILE.PUT_NAMES
A procedure FND_FILE.PUT_NAMES é mais para propósitos de depuração e teste, com utilização diretamente no SQL*PLUS. Nada acontecerá se ela for chamada de dentro de um programa concorrente.
Ela configura temporariamente os nomes dos arquivos de log e saída, juntamente com o diretório de destino desses arquivos.
Possui três parâmetros:
- p_log (IN): Nome do arquivo de log temporário
- p_out (IN): Nome do arquivo de saída temporário
- p_dir (IN): Diretório temporário (Deve ser um diretório que o banco de dados possa escrever)
FND_FILE.PUT_NAMES( 'teste.log' , 'teste.out' , '/tmp/' ); |
FND_FILE.CLOSE
A procedure FND_FILE.CLOSE fecha um arquivo de log ou saída, caso esteja aberto.
Essa procedure não deve ser utilizada em programas concorrentes.
Não possui parâmetros, basta efetuar a chamada.
FND_FILE.CLOSE; |
Exceções Geradas
A FND_FILE pode gerar a exceção FND_FILE.UTL_FILE_ERROR, além das exceções tradicionais NO_DATA_FOUND ou VALUE_ERROR.
Conclusão
Agora você sabe que sempre que pressiona o botão para ver o log ou a saída de um programa concorrente, o texto foi provavelmente escrito pela package FND_FILE.
No log sempre escrevemos os erros, alertas e mensagens de depuração.
Na saída sempre escrevemos mensagens úteis ao usuário final, como as estatísticas ou resultado de um processamento.
Se gostou desse artigo sobre a package FND_FILE, não deixe de compartilhar com a sua rede de contatos.
Link permanente
Ler esse texto me ajudou bastante!! Obrigado!!
Link permanente
E aí Marcelo, blz?
Que bom que gostou.
Abs
Eduardo