Fórum Package Oracle #619617

02/03/2023

0

Ola pessoal.

Tenho esse código abaixo e não consigo realizar a condição para enviar todo 10º dia útil de cada mês, por exemplo: vai ter uma rotina que no 10º dia útil vai enviar um email e dentro desse código abaixo, tenho que por uma outra função que fiz, que é a de email.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function EnvioDeEmail(pParametros in varchar2) return boolean as
     
        RET BOOLEAN;
 
        DIAUTIL DATE;
         
    begin
 
        PCK_PROCESSAMENTO.LOG('Verifica para gerar notificações');
        PCK_PROCESSAMENTO.LOG('Orgao: ' || PCK_PROCESSAMENTO.GETORGAO);
        PCK_PROCESSAMENTO.LOG('Tipo: ' || PCK_PROCESSAMENTO.GETTIPO);
 
        SELECT TRUNC(FN_DIA_UTIL_CORRIDO(PCK_PROCESSAMENTO.GETORGAO, CURRENT_DATE, 0)) INTO DIAUTIL FROM DUAL;
        --PEN;GERACAO:GERARLOTES;DTBASECALC:24/02/2023
         
        IF DIAUTIL = TRUNC(CURRENT_DATE) THEN
            PCK_PROCESSAMENTO.LOG('Processando. É dia útil: ' || TO_CHAR(DIAUTIL, 'DD/MM/YYYY'));  
    
Thiago Ferreira

Thiago Ferreira

Responder

Posts

02/03/2023

Arthur Heinrich

Será que sua função de dia útil está funcionando corretamente?

A função CURRENT_DATE retorna o horário atual, contendo o dia e a hora. Sua função pode estar interpretando que, como esta data possui horário, é posterior a hoje (às 00:00hs) e retornar o dia seguinte?

Se for isso, você pode corrigir a função ou alterar o select para:

1
SELECT TRUNC(FN_DIA_UTIL_CORRIDO(PCK_PROCESSAMENTO.GETORGAO, trunc(CURRENT_DATE), 0)) INTO DIAUTIL FROM DUAL;


Mas, de qualquer forma, não há indicação nenhuma de que isto representaria o décimo dia útil, mas sim, um dia útil qualquer.

Se quer que seja no décimo dia útil, precisa primeiro calcular a data correspondente a ele, para então comparar.

Outra coisa importante é considerar que CURRENT_DATE pode mudar dependendo do fuso horário do cliente. É possível que duas datas "iguais", sejam representadas como dias distintos, dependendo do fuso horário.

02/03/2023 às 23:00hs GMT -3 é o mesmo que 03/03/2023 às 01:00hs GMT -1
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar