Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpapp/script/procedure/dwh/FUN_CALCOLA_DATA.sql
2024-05-13 12:54:14 +02:00

42 lines
1.2 KiB
SQL

CREATE OR REPLACE FUNCTION "FUN_CALCOLA_DATA"
( nome_file IN VARCHAR2
, orario_chiusura IN VARCHAR2
, data_default IN DATE
) RETURN DATE AS data_finale DATE;
chiusura_finestra DATE;
BEGIN
data_finale := to_timestamp(substr(nome_file,5,14),'YYYYMMDDHH24MISS');
-- verifico se data finale sia un giorno lavorativo
IF data_finale = FUN_DATE_FESTIVE(data_finale) THEN
-- imposto l'ora di chiusura di un giorno lavorativo
chiusura_finestra := to_timestamp(
substr(nome_file,5,8) || orario_chiusura, 'YYYYMMDDHH24MISS');
ELSE
-- nei festivi la finestra ? SEMPRE chiusa
chiusura_finestra := to_timestamp(
substr(nome_file,5,8) || '000000', 'YYYYMMDDHH24MISS');
END IF ;
--DBMS_OUTPUT.put_line('Chiusura = '|| chiusura_finestra);
-- ora verifico se la data finale supera la chiusura
IF data_finale > chiusura_finestra THEN
-- la supera, quindi devo aggiungere un giorno lavorativo
data_finale := FUN_DATE_FESTIVE_SUCC(data_finale+1);
END IF;
RETURN data_finale;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Errore in FUN_CALCOLA_DATA ' || SQLERRM);
RETURN data_default;
END FUN_CALCOLA_DATA;
/