CREATE OR REPLACE FUNCTION FUN_GIORNI_LAVORATIVI (data_finale IN DATE, data_iniziale IN DATE) RETURN NUMBER -- Restituisce il numero di giorni lavorativi tra data_iniziale e data_finale IS appo_giorni NUMBER := NULL; appo_data_iniziale DATE := dwh.fun_date_festive_succ (data_iniziale); appo_data_finale DATE := dwh.fun_date_festive_succ (data_finale); BEGIN IF TRUNC (appo_data_finale) > TRUNC (appo_data_iniziale) THEN SELECT TRUNC (appo_data_finale) - TRUNC (appo_data_iniziale) - SUM (DECODE (tip_gio, 'F', 1, 'P', 1, 0)) INTO appo_giorni FROM mnp.s_dim_tempo d WHERE d.DATA >= TRUNC (appo_data_iniziale) AND d.DATA <= TRUNC (appo_data_finale); ELSE appo_giorni := 0; END IF; RETURN appo_giorni; END fun_giorni_lavorativi; /