DECLARE
    RetVal number;
    V_DATA_CURR DATE;
    V_DATA_CUT_OVER date;
    V_RECIPIENT_NEW varchar2(4);
    V_ID_RICHIESTA varchar2(15);
    V_PROCESSO varchar2(1);

BEGIN
    DBMS_OUTPUT.put_line ('START DATE: '||sysdate);
    -- AGGIORNAMENTO DEI CAMPI RECIPIENT_NEW E DATA_CESSAZIONE_DEF VERIFICANDO LA PRESENZA DI CESSAZIONE
    FOR R_VAR_MSISDN IN
        ( SELECT * FROM MNP_PCCOM_VARIAZIONI WHERE LAVORATO IS NULL )
    LOOP
        BEGIN
            V_ID_RICHIESTA  := NULL;
            V_DATA_CUT_OVER := NULL;
            V_PROCESSO      := NULL;
            V_RECIPIENT_NEW := NULL;

            RetVal := MNP.F_TROVA_ULTIMO_PROC_PCCOM ( '39'||R_VAR_MSISDN.NUM_TEL, V_ID_RICHIESTA, V_DATA_CURR, V_DATA_CUT_OVER, V_PROCESSO, V_RECIPIENT_NEW );
            
            UPDATE MNP_PCCOM_VARIAZIONI
            SET DATA_CESSAZIONE_DEF = V_DATA_CUT_OVER,
                RECIPIENT_NEW = V_RECIPIENT_NEW,
                LAVORATO = 1
            WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
            
            COMMIT;
            
        EXCEPTION WHEN NO_DATA_FOUND THEN
            V_DATA_CUT_OVER   := NULL;
            V_RECIPIENT_NEW   := NULL;
            --
            UPDATE MNP_PCCOM_VARIAZIONI
            SET LAVORATO = 1
            WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
          
            COMMIT;
        END;
    
    END LOOP;
    DBMS_OUTPUT.put_line ('END DATE: '||sysdate);
END;
/
