Procedure - Retorna data futura ao informar número de dias úteis

SQL: 

CREATE OR ALTER PROCEDURE RETORNA_SOMA_DIAS_UTEIS (XINICIO VARCHAR(20), XNDIA INTEGER)
RETURNS (RETORNO VARCHAR(20))
AS
declare variable i integer;
DECLARE variable DATA date;
BEGIN
i = 0;
XINICIO = replace(XINICIO,'/','.');
XINICIO = replace(XINICIO,'-','.');
DATA = CAST(XINICIO AS DATE);
WHILE (i < XNDIA) DO
  BEGIN  
  DATA = DATA +1;    
    IF (EXTRACT(WEEKDAY FROM DATA) NOT IN (0,6)) THEN  i = i + 1;       
  END
  RETORNO = DATA;
  suspend;
 END

Parâmetros da procedure:

Entrada:

***OBSERVAÇÕES: Existe um tratamento para aceite da XINICIO com separadores ponto, traço ou barra. A função não está preparada para considerar feriados.

Saída

Chamada da procedure: 

SELECT RETORNO
  FROM DOX_RETORNA_DATA_DIAUTIL('28.11.2019', 2)

Retorno: 

2019-12-02

Explicação do retorno:

Ao informar uma data (Exemplo '28.11'2019') a função irá somar o numero de dias uteis informados, ou seja, irá desconsiderar os sábados e domingos para definição da data futura.

Detalhamento do resultado:

Outro exemplo de uso:

SELECT RETORNO
  FROM DOX_RETORNA_DATA_DIAUTIL(current_date, 15)

 


Revisão #1
Criado 9 March 2022 10:53:00 por Nicolly Andrielly
Atualizado 10 March 2022 14:24:04 por Nicolly Andrielly