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;
/