Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6 | Andrea | 1 | CREATE OR REPLACE PACKAGE LOAD_STAT_UIU_X_COM |
2 | IS |
||
3 | |||
4 | PROCEDURE LOAD_STAT_UIU; |
||
5 | END; |
||
6 | / |
||
7 | CREATE OR REPLACE PACKAGE BODY LOAD_STAT_UIU_X_COM IS |
||
8 | |||
9 | w_codcom VARCHAR2(4) := NULL; |
||
10 | w_prov VARCHAR2(2) := NULL; |
||
11 | w_periodo VARCHAR2(6) := NULL; |
||
12 | |||
13 | ERRORE_DB EXCEPTION; |
||
14 | |||
15 | w_err_msg VARCHAR2(1024); |
||
16 | w_sql_err VARCHAR2(6) := NULL; |
||
17 | |||
18 | PROCEDURE STAT_UIU_COMUNALE; |
||
19 | /*********************************************************************** |
||
20 | * PROCEDURA DI CARICAMENTO DELLE STATISTICHE UIU X COMUNE |
||
21 | ************************************************************************/ |
||
22 | |||
23 | PROCEDURE LOAD_STAT_UIU |
||
24 | IS |
||
25 | |||
26 | /* individuo la sequenza di Cod. Belfiore da utilizzare */ |
||
27 | CURSOR curCOMUNI IS |
||
28 | |||
29 | select substr(l.job_name,20,4), |
||
30 | c.ti01_prov, |
||
31 | max(substr(l.job_name,15,4)||substr(l.job_name,13,2)) |
||
32 | from sinteg_log l, s3_ti01_comuni c |
||
33 | where substr(l.job_name,20,4)=c.ti01_keycom and |
||
34 | l.job_name like 'INCR_CENS%' and |
||
35 | l.status='SUCCEEDED' |
||
36 | group by substr(l.job_name,20,4),c.ti01_prov |
||
37 | order by c.ti01_prov, substr(l.job_name,20,4); |
||
38 | |||
39 | |||
40 | BEGIN |
||
41 | |||
42 | /* Loop su elenco comuni per caricamento statistiche */ |
||
43 | OPEN curCOMUNI; |
||
44 | LOOP |
||
45 | FETCH curCOMUNI INTO w_codcom, w_prov, w_periodo; |
||
46 | EXIT WHEN curCOMUNI%NOTFOUND; |
||
47 | BEGIN |
||
48 | /* gestisco il caricamento delle statistiche per ogni comune */ |
||
49 | if w_sql_err is null then |
||
50 | STAT_UIU_COMUNALE; |
||
51 | end if; |
||
52 | |||
53 | EXCEPTION |
||
54 | WHEN OTHERS THEN |
||
55 | w_sql_err := sqlcode; |
||
56 | w_err_msg := sqlerrm; |
||
57 | RAISE ERRORE_DB; |
||
58 | END; |
||
59 | END LOOP; /* End Loop su elenco comuni */ |
||
60 | |||
61 | EXCEPTION |
||
62 | WHEN ERRORE_DB THEN |
||
63 | IF curCOMUNI%ISOPEN THEN |
||
64 | CLOSE curCOMUNI; |
||
65 | END IF; |
||
66 | ROLLBACK; |
||
67 | WHEN OTHERS THEN |
||
68 | IF curCOMUNI%ISOPEN THEN |
||
69 | CLOSE curCOMUNI; |
||
70 | END IF; |
||
71 | w_sql_err := sqlcode; |
||
72 | w_err_msg := sqlerrm; |
||
73 | ROLLBACK; |
||
74 | |||
75 | if w_sql_err is not null then |
||
76 | dbms_output.put_line(w_sql_err); |
||
77 | dbms_output.put_line(w_err_msg); |
||
78 | end if; |
||
79 | |||
80 | if w_sql_err is null then |
||
81 | dbms_output.put_line('caricamento delle statistiche comunali su stat_uiu_x_com OK' ); |
||
82 | end if; |
||
83 | |||
84 | END; |
||
85 | |||
86 | /* PROCEDURA di caricamento delle statistiche UIU del comune*/ |
||
87 | PROCEDURE STAT_UIU_COMUNALE is |
||
88 | |||
89 | l_count NUMBER :=0; |
||
90 | |||
91 | BEGIN |
||
92 | select count(*) INTO l_count from stat_uiu_x_com |
||
93 | where cod_belfiore=w_codcom and |
||
94 | substr(mese_estrazione,4,4)||substr(mese_estrazione,1,2)=w_periodo; |
||
95 | |||
96 | IF l_count = 0 |
||
97 | THEN |
||
98 | insert into stat_uiu_x_com |
||
99 | select t.COMUNE COD_BELFIORE, |
||
100 | c.ti01_prov, |
||
101 | c.ti01_keycom COMUNE, |
||
102 | nvl(t.CAT,'000') CATEGORIA, |
||
103 | sum(t.NUM_IMMOBILI) IMMOBILI, |
||
104 | nvl(sum(t.CONSISTENZA),0) CONSISTENZA, |
||
105 | nvl(sum(t.RENDITA_EURO),0) RENDITA_EURO, |
||
106 | substr(w_periodo,5,2)||'/'||substr(w_periodo,1,4) MESE_ESTRAZIONE |
||
107 | from statistiche_uiu_x_comune t, s3_ti01_comuni c |
||
108 | where t.COMUNE=c.ti01_keycom |
||
109 | and t.COMUNE=w_codcom |
||
110 | group by t.COMUNE,c.ti01_prov, c.ti01_keycom, t.CAT; |
||
111 | |||
112 | commit; |
||
113 | END IF; |
||
114 | |||
115 | EXCEPTION |
||
116 | WHEN OTHERS THEN |
||
117 | w_sql_err := sqlcode; |
||
118 | w_err_msg := sqlerrm; |
||
119 | RAISE ERRORE_DB; |
||
120 | END; |
||
121 | |||
122 | /* END PROCEDURE STAT_UIU_COMUNALE */ |
||
123 | |||
124 | END; |
||
125 | / |