Como utilizar a API FND_FILE

FND_FILE

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.

2 Comentários

Deixe um comentário

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