80 lines
3.2 KiB
SQL
80 lines
3.2 KiB
SQL
CREATE OR REPLACE PROCEDURE UPDATE_PORTING_DELTA (
|
|
mese_in IN NUMBER,
|
|
anno_in IN NUMBER,
|
|
cod_errore IN OUT NUMBER
|
|
)
|
|
IS
|
|
primo_giorno_mese DATE;
|
|
-- Primo giorno lavorativo del mese di riferiemnto
|
|
ultimo_giorno_mese DATE;
|
|
-- Ultimo giorno lavorativo del mese di riferiemnto
|
|
errore NUMBER (1) := 0;
|
|
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
|
--
|
|
-- MODIFICATION HISTORY
|
|
-- Person Date Comments
|
|
-- L.Marcucci 16/08/2004 -------------------------------------------
|
|
BEGIN
|
|
cod_errore := 0;
|
|
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
|
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
|
|
|
DELETE FROM dwh.mnp_dw_porting_delta;
|
|
|
|
COMMIT;
|
|
|
|
INSERT INTO dwh.mnp_dw_porting_delta
|
|
(id_richiesta, aom_recipient, msisdn,
|
|
data_ricezione_richiesta, data_cut_over_calc)
|
|
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
|
gr.dataricezionerichiesta, gr.data_cut_over
|
|
FROM mnp.mnp_gestione_richiesta_porting gr
|
|
WHERE gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
|
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
|
AND ( gr.data_fine_processo IS NULL
|
|
OR (gr.data_fine_processo >= primo_giorno_mese)
|
|
);
|
|
|
|
COMMIT;
|
|
dwh.update_porting_delta_2 (ultimo_giorno_mese, errore);
|
|
|
|
IF errore = 0
|
|
THEN
|
|
MERGE INTO dwh.mnp_dw_porting t
|
|
USING dwh.mnp_dw_porting_delta s
|
|
ON (t.id_richiesta = s.id_richiesta)
|
|
WHEN MATCHED THEN
|
|
UPDATE
|
|
SET t.aom_recipient = s.aom_recipient, t.msisdn = s.msisdn,
|
|
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
|
t.data_configurazione_teorica =
|
|
s.data_configurazione_teorica,
|
|
t.data_configurazione_effettiva =
|
|
s.data_configurazione_effettiva,
|
|
t.data_cut_over_calc = s.data_cut_over_calc,
|
|
t.data_cut_over_effettiva = s.data_cut_over_effettiva,
|
|
t.stato = s.stato,
|
|
t.data_stato_finale = s.data_stato_finale
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (id_richiesta, aom_recipient, msisdn,
|
|
data_ricezione_richiesta, data_configurazione_teorica,
|
|
data_configurazione_effettiva, data_cut_over_calc,
|
|
data_cut_over_effettiva, stato, data_stato_finale)
|
|
VALUES (s.id_richiesta, s.aom_recipient, s.msisdn,
|
|
s.data_ricezione_richiesta,
|
|
s.data_configurazione_teorica,
|
|
s.data_configurazione_effettiva, s.data_cut_over_calc,
|
|
s.data_cut_over_effettiva, s.stato, s.data_stato_finale);
|
|
COMMIT;
|
|
ELSE
|
|
cod_errore := 1;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in UPDATE_PORTING_DELTA ' || SQLERRM);
|
|
RETURN;
|
|
END; -- Procedure
|
|
/
|