Subversion Repositories Sigmater

Rev

Blame | Last modification | View Log | Download | RSS feed

CREATE OR REPLACE PACKAGE LOAD_STAT_UIU_X_COM
IS

PROCEDURE LOAD_STAT_UIU;
END;
/
CREATE OR REPLACE PACKAGE BODY LOAD_STAT_UIU_X_COM IS

        w_codcom    VARCHAR2(4) := NULL;
        w_prov      VARCHAR2(2) := NULL;
        w_periodo   VARCHAR2(6) := NULL;

        ERRORE_DB EXCEPTION;

        w_err_msg       VARCHAR2(1024);
        w_sql_err       VARCHAR2(6) := NULL;

        PROCEDURE STAT_UIU_COMUNALE;
        /***********************************************************************
        * PROCEDURA DI CARICAMENTO DELLE STATISTICHE UIU X COMUNE
        ************************************************************************/

        PROCEDURE LOAD_STAT_UIU
        IS

        /* individuo la sequenza di Cod. Belfiore da utilizzare */
        CURSOR curCOMUNI IS

   select substr(l.job_name,20,4),
         c.ti01_prov,
         max(substr(l.job_name,15,4)||substr(l.job_name,13,2))
  from sinteg_log l, s3_ti01_comuni c
  where substr(l.job_name,20,4)=c.ti01_keycom and
        l.job_name like 'INCR_CENS%' and
        l.status='SUCCEEDED'
  group by substr(l.job_name,20,4),c.ti01_prov 
  order by c.ti01_prov, substr(l.job_name,20,4);


        BEGIN

                /* Loop su elenco comuni per caricamento statistiche */
                OPEN curCOMUNI;
                LOOP
                        FETCH curCOMUNI INTO w_codcom, w_prov, w_periodo;
                        EXIT WHEN curCOMUNI%NOTFOUND;
                        BEGIN
                                /* gestisco il caricamento delle statistiche per ogni comune */
                                if w_sql_err is null then
                                   STAT_UIU_COMUNALE;
                                end if;

                        EXCEPTION
                        WHEN OTHERS THEN
                                w_sql_err := sqlcode;
                                w_err_msg := sqlerrm;
                                RAISE  ERRORE_DB;
                        END;
                END LOOP;  /* End Loop su elenco comuni */

        EXCEPTION
                WHEN ERRORE_DB THEN
                IF curCOMUNI%ISOPEN THEN
                CLOSE curCOMUNI;
                END IF;
                ROLLBACK;
                WHEN OTHERS THEN
                IF curCOMUNI%ISOPEN THEN
                CLOSE curCOMUNI;
                END IF;
                w_sql_err := sqlcode;
                        w_err_msg := sqlerrm;
                ROLLBACK;

        if w_sql_err is not null then
                dbms_output.put_line(w_sql_err);
                dbms_output.put_line(w_err_msg);
        end if;

        if  w_sql_err is null then
                        dbms_output.put_line('caricamento delle statistiche comunali su stat_uiu_x_com OK' );
        end if;

        END;

/* PROCEDURA di caricamento delle statistiche UIU del comune*/
        PROCEDURE STAT_UIU_COMUNALE is

        l_count   NUMBER :=0;

        BEGIN
    select count(*) INTO l_count from stat_uiu_x_com
    where cod_belfiore=w_codcom and
          substr(mese_estrazione,4,4)||substr(mese_estrazione,1,2)=w_periodo;

    IF l_count = 0
        THEN
         insert into stat_uiu_x_com
         select t.COMUNE COD_BELFIORE, 
         c.ti01_prov,
         c.ti01_keycom COMUNE, 
         nvl(t.CAT,'000') CATEGORIA, 
         sum(t.NUM_IMMOBILI) IMMOBILI, 
         nvl(sum(t.CONSISTENZA),0) CONSISTENZA,
         nvl(sum(t.RENDITA_EURO),0) RENDITA_EURO, 
         substr(w_periodo,5,2)||'/'||substr(w_periodo,1,4) MESE_ESTRAZIONE
         from statistiche_uiu_x_comune t, s3_ti01_comuni c
         where t.COMUNE=c.ti01_keycom 
         and t.COMUNE=w_codcom
         group by t.COMUNE,c.ti01_prov, c.ti01_keycom, t.CAT;

         commit;
        END IF;

        EXCEPTION
        WHEN OTHERS THEN
                w_sql_err := sqlcode;
                w_err_msg := sqlerrm;
                RAISE  ERRORE_DB;
        END;

/* END PROCEDURE STAT_UIU_COMUNALE */

END;
/