123 lines
3.9 KiB
SQL
123 lines
3.9 KiB
SQL
CREATE OR REPLACE PROCEDURE "CALCOLO_SIM_PRJHOC" (dataRif IN DATE )
|
|
|
|
AS
|
|
-- PURPOSE: Aggiorna la tabella MNP_DW_SLA_3GG_OUT
|
|
-- valorizzando il numero delle SIM per i progetti ad HOC.
|
|
-- Elabora i record che hanno come mese di competenza
|
|
-- il mese precedente a dataRif.
|
|
--
|
|
--
|
|
-- MODIFICATION HISTORY
|
|
-- Person Date Comments
|
|
-- Letizia MOnosilio 04/11/2010 Creazione script
|
|
---------------------------------------
|
|
num_sim NUMBER :=0;
|
|
memo_richiesta VARCHAR2(23);
|
|
memo_gruppo VARCHAR2(12);
|
|
n_rec INTEGER := 0;
|
|
|
|
|
|
CURSOR record_sim_rec
|
|
IS
|
|
SELECT ric.codice_gruppo codiceGruppo, sla.ID_RICHIESTA idRichiesta
|
|
FROM dwh.mnp_dw_sla_3gg_out sla, mnp.mnp_gestione_richiesta_rec ric
|
|
WHERE sla.id_richiesta=ric.id_richiesta AND
|
|
sla.mese_comp_finale = TO_CHAR ( Last_Day(ADD_MONTHS(dataRif,-2))+1, 'MM/YYYY') AND
|
|
sla.processo ='R' AND
|
|
sla.flag_calcolo_numsim = 1
|
|
ORDER BY ric.codice_gruppo, sla.ID_RICHIESTA;
|
|
|
|
CURSOR record_sim_don
|
|
IS
|
|
SELECT ric.codice_gruppo codiceGruppo, sla.ID_RICHIESTA idRichiesta
|
|
FROM dwh.mnp_dw_sla_3gg_out sla, mnp.mnp_gestione_richiesta ric
|
|
WHERE sla.id_richiesta=ric.id_richiesta AND
|
|
sla.mese_comp_finale = TO_CHAR ( Last_Day(ADD_MONTHS(dataRif,-2))+1, 'MM/YYYY') AND
|
|
sla.processo ='D' AND
|
|
sla.flag_calcolo_numsim = 1
|
|
ORDER BY ric.codice_gruppo, sla.ID_RICHIESTA;
|
|
|
|
BEGIN
|
|
|
|
|
|
DBMS_OUTPUT.put_line ('CALCOLO_SIM_PRJHOC: INIZIO PROCEDURA calcolo SIM Recipient- '||TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS'));
|
|
DBMS_OUTPUT.put_line('Periodo di competenza = '|| TO_CHAR ( Last_Day(ADD_MONTHS(dataRif,-2))+1, 'MM/YYYY'));
|
|
|
|
memo_richiesta:=null;
|
|
memo_gruppo := null;
|
|
|
|
FOR rec IN record_sim_rec LOOP
|
|
n_rec := n_rec +1;
|
|
BEGIN
|
|
|
|
IF (memo_richiesta is null) OR (memo_richiesta <> rec.idRichiesta)
|
|
THEN
|
|
BEGIN
|
|
memo_richiesta:= rec.idRichiesta;
|
|
IF (memo_gruppo is null) OR (memo_gruppo <> rec.codiceGruppo)
|
|
THEN
|
|
BEGIN
|
|
memo_gruppo:= rec.codiceGruppo;
|
|
SELECT COUNT(*)
|
|
INTO num_sim
|
|
FROM mnp.mnp_gestione_richiesta_rec ric
|
|
WHERE ric.CODICE_GRUPPO=rec.codiceGruppo;
|
|
END;
|
|
END IF;
|
|
|
|
UPDATE dwh.mnp_dw_sla_3gg_out
|
|
SET numero_sim = num_sim
|
|
WHERE
|
|
mese_comp_finale = TO_CHAR ( Last_Day(ADD_MONTHS(dataRif,-2))+1, 'MM/YYYY') AND
|
|
id_richiesta = rec.idRichiesta;
|
|
END;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
DBMS_OUTPUT.put_line ('CALCOLO_SIM_PRJHOC: terminato calcolo SIM Recipient');
|
|
|
|
FOR rec IN record_sim_don LOOP
|
|
n_rec := n_rec +1;
|
|
BEGIN
|
|
|
|
IF (memo_richiesta is null) OR (memo_richiesta <> rec.idRichiesta)
|
|
THEN
|
|
BEGIN
|
|
memo_richiesta:= rec.idRichiesta;
|
|
IF (memo_gruppo is null) OR (memo_gruppo <> rec.codiceGruppo)
|
|
THEN
|
|
BEGIN
|
|
memo_gruppo:= rec.codiceGruppo;
|
|
SELECT COUNT(*)
|
|
INTO num_sim
|
|
FROM mnp.mnp_gestione_richiesta ric
|
|
WHERE ric.CODICE_GRUPPO=rec.codiceGruppo;
|
|
END;
|
|
END IF;
|
|
|
|
UPDATE dwh.mnp_dw_sla_3gg_out
|
|
SET numero_sim = num_sim
|
|
WHERE
|
|
mese_comp_finale = TO_CHAR ( Last_Day(ADD_MONTHS(dataRif,-2))+1, 'MM/YYYY') AND
|
|
id_richiesta = rec.idRichiesta;
|
|
END;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
DBMS_OUTPUT.put_line ('CALCOLO_SIM_PRJHOC: terminato calcolo SIM Donor');
|
|
|
|
COMMIT;
|
|
|
|
DBMS_OUTPUT.put_line ('PCALCOLO_SIM_PRJHOC: FINE PROCEDURA - '||TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS')||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if record_sim_rec%ISOPEN then CLOSE record_sim_rec;
|
|
end if;
|
|
if record_sim_don%ISOPEN then CLOSE record_sim_don;
|
|
end if;
|
|
DBMS_OUTPUT.put_line ('Errore in CALCOLO_SIM_PRJHOC ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END calcolo_sim_prjhoc;
|
|
/ |