create or replace procedure P_REPORT_MONITORAGGIORECIPIENT(p_mese_comp varchar2) is -- parametro in ingresso nel formato mm/yyyy v_ora_inizio number; v_ora_fine number; begin -- estrazione fascia oraria per inserimento richiesta select to_number(replace(inizio,':')), to_number(replace(fine,':')) into v_ora_inizio, v_ora_fine from mnp.MNP_FASCIA_ORARIA_MONITOR_REC; -- popolamento tabella insert into MNP_DW_REPORT_MONITORAGGIO_REC (mese_comp, tipo_giorno_inserimento, fascia_oraria_richiesta, fascia_oraria_invio, tipo_cliente, numero_richieste) select p_mese_comp, tipo_giorno, tipologia, tipologia_invio, tipo_cliente, count(*) from ( select rep.*, case when to_char(DATA_RICHIESTA, 'HH24miss')<=v_ora_inizio then '1' when to_char(DATA_RICHIESTA, 'HH24miss')>v_ora_inizio and to_char(DATA_RICHIESTA, 'HH24miss')<= v_ora_fine then '2' when to_char(DATA_RICHIESTA, 'HH24miss')>v_ora_fine then '3' end tipologia, DECODE(DWH.FUN_GIORNI_LAVORATIVI(data_invio, data_richiesta), 0, 0, 1, 1, 2) tipologia_invio from (SELECT ric."ID_RICHIESTA" ID_RICHIESTA, NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE") DATA_RICHIESTA, ric."COD_OP_DON" COD_OP_DON, xml_out.data_invio data_invio, rich_rec.tipo_cliente tipo_cliente, d.tip_gio tipo_giorno FROM (SELECT msp.id_richiesta id_richiesta, msp.data_richiesta data_richiesta, msp.data_ricezione data_ricezione, msp.codice_operatore_donating cod_op_don FROM mnp.mnp_msp_in_rec msp WHERE msp.progetto_ad_hoc = 'N' UNION SELECT msc.id_richiesta id_richiesta, msc.data_richiesta data_richiesta, msc.data_ricezione data_ricezione, msc.codice_operatore_donating cod_op_don FROM mnp.mnp_msc_in_rec msc WHERE msc.progetto_ad_hoc = 'N' UNION SELECT bit.id_richiesta id_richiesta, NULL data_richiesta, -- DATA_RICHIESTA NON CONTENENTE ORE:MI:SS bit.data_ricezione_file data_ricezione, bit.donating_cod_op cod_op_don FROM mnp.mnp_bit_in_rec bit WHERE bit.progetto_ad_hoc IS null) ric, mnp.mnp_xml_out xml_out, mnp.mnp_xml_richiesta_out richieste_out, mnp.mnp_gestione_richiesta_rec rich_rec, MNP.S_DIM_TEMPO d WHERE xml_out.nome_file = richieste_out.nome_file AND xml_out.tipo_file = 1 AND richieste_out.id_richiesta = ric.id_richiesta AND ric.id_richiesta = rich_rec.id_richiesta AND ric.cod_op_don IN ( SELECT id_operatore FROM mnp.mnp_anagrafica_operatori WHERE tipo_operatore = 'RETE') AND d.data = trunc(NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE")) UNION -- Donor Virtuale SELECT ric."ID_RICHIESTA" ID_RICHIESTA, NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE") DATA_RICHIESTA, ric."COD_OP_DON" COD_OP_DON, not_don_out.data_invio data_invio, rich_don_virt.tipo_cliente tipo_cliente, d.tip_gio tipo_giorno FROM (SELECT msp.id_richiesta id_richiesta, msp.data_richiesta data_richiesta, msp.data_ricezione data_ricezione, msp.codice_operatore_donating cod_op_don FROM mnp.mnp_msp_in_rec msp WHERE msp.progetto_ad_hoc = 'N' UNION SELECT msc.id_richiesta id_richiesta, msc.data_richiesta data_richiesta, msc.data_ricezione data_ricezione, msc.codice_operatore_donating cod_op_don FROM mnp.mnp_msc_in_rec msc WHERE msc.progetto_ad_hoc = 'N' UNION SELECT bit.id_richiesta id_richiesta, NULL data_richiesta, -- DATA_RICHIESTA NON CONTENENTE ORE:MI:SS bit.data_ricezione_file data_ricezione, bit.donating_cod_op cod_op_don FROM mnp.mnp_bit_in_rec bit WHERE bit.progetto_ad_hoc IS null) ric, mnp.mnp_gest_rich_donor_virt rich_don_virt, mnp.mnp_mvno_notifica_don_out not_don_out, MNP.S_DIM_TEMPO d WHERE not_don_out.id_richiesta_dbc = ric.id_richiesta AND not_don_out.tipo_evento = '01' AND ric.id_richiesta = rich_don_virt.id_richiesta AND ric.cod_op_don IN (SELECT id_operatore FROM mnp.mnp_anagrafica_operatori WHERE tipo_operatore = 'VIRT' AND gestore_aom = 'TIMG') AND d.data = trunc(NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE"))) rep where data_richiesta between to_date('01/'||p_mese_comp,'dd/mm/yyyy') and last_day(to_date('01/'||p_mese_comp,'dd/mm/yyyy')) ) group by tipo_giorno, tipologia, tipologia_invio, tipo_cliente; commit; exception when others then DBMS_OUTPUT.put_line ('Errore nel popolamento della tabella MNP_DW_REPORT_MONITORAGGIO_REC ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')); end P_REPORT_MONITORAGGIORECIPIENT; /