Se tem um tipo de dado muito utilizado em parâmetros de programas, é o tipo data.
Com ele podemos filtrar as queries dos nossos programas, seja com data única ou numa faixa de datas (inicial e final).
Só é preciso tomar alguns cuidados, por exemplo, com os formatos.
E no EBS não é diferente, principalmente quando temos parâmetros do tipo data em concurrents e esses parâmetros serão utilizados em programas armazenados no banco de dados.
Por sorte, temos uma API pronta para facilitar a nossa vida, que é a FND_DATE.
Ela possui funções que formatam as datas do jeito que precisamos.
Quer saber mais sobre esse assunto? Então acompanhe o artigo para saber mais sobre:
- Configuração do parâmetro no concurrent
- Configuração do parâmetro na stored procedure
- FND_DATE.CANONICAL_TO_DATE e FND_DATE.DATE_TO_CANONICAL
Configuração do parâmetro no concurrent
Quando estamos configurando o parâmetro do tipo data no concurrent, devemos utilizar o conjunto de valores FND_STANDARD_DATE:
Ele irá garantir que o parâmetro chegue com o formato correto na stored procedure.
Configuração do parâmetro na stored procedure
Aqui talvez você ache estranho, mas o tipo do parâmetro deve ser VARCHAR2 e não DATE:
-- Declaração da Procedure PROCEDURE teste (p_date IN VARCHAR2); |
Mas não termina aqui, você não pode simplesmente utilizar o parâmetro no formato VARCHAR2, pois terá problemas.
Antes de utilizar precisará converter esses valores, como veremos a seguir.
FND_DATE.CANONICAL_TO_DATE
Antes de utilizar o parâmetro, é necessário convertê-lo para o formato data.
Para essa finalidade utilizamos a API FND_DATE.CANONICAL_TO_DATE:
-- Converte para o formato data l_date := FND_DATE.CANONICAL_TO_DATE(p_date); |
Agora está tudo pronto, basta utilizar a variável que o formato estará correto.
E caso queira fazer o inverso, é só utilizar a FND_DATE.DATE_TO_CANONICAL.
Conclusão
É um detalhe que parece simples, mas já vi muita gente quebrando a cabeça com problema em formatos de datas.
A combinação do conjunto de valores FND_STANDARD_DATE + a API FND_DATE garantirá que você não terá problemas.
Se gostou desse artigo, não deixe de compartilhar com seus amigos.