Subversion Repositories Sigmater

Rev

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
/