First Commit - Source Code from Reply
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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;
|
||||
/
|
||||
Reference in New Issue
Block a user