116 lines
3.8 KiB
Plaintext
116 lines
3.8 KiB
Plaintext
CREATE OR REPLACE PROCEDURE calcola_sxmlin (
|
|
nomeindicatore IN VARCHAR2,
|
|
starthour IN NUMBER,
|
|
endhour IN NUMBER,
|
|
frequenza IN VARCHAR2,
|
|
nomefile IN VARCHAR2,
|
|
partizione IN VARCHAR2,
|
|
hostaria IN VARCHAR2
|
|
)
|
|
IS
|
|
data_val DATE;
|
|
file1 UTL_FILE.file_type;
|
|
|
|
TYPE rec_valore_type IS RECORD (
|
|
desc_olo mnp_olo.desc_olo%TYPE,
|
|
tipo_processo_descr mnp_lov.descr%TYPE,
|
|
tipo_file_descr mnp_lov.descr%TYPE,
|
|
valore NUMBER
|
|
);
|
|
|
|
TYPE cur_valore_type IS REF CURSOR;
|
|
|
|
cur_valore cur_valore_type;
|
|
rec_valore rec_valore_type;
|
|
sql_stmt VARCHAR2 (2000);
|
|
BEGIN
|
|
sql_stmt :=
|
|
' SELECT e.desc_olo, e.tipo_processo_descr, e.tipo_file_descr,'
|
|
|| ' COUNT (nome_file) valore'
|
|
|| ' FROM mnp_xml_in PARTITION ('
|
|
|| partizione
|
|
|| ') a,'
|
|
|| ' (SELECT b.NAME tipo_processo, b.descr tipo_processo_descr,'
|
|
|| ' c.NAME tipo_file, c.descr tipo_file_descr, d.desc_olo'
|
|
|| ' FROM mnp_lov b, mnp_lov c, mnp_olo d, mnp_lov_ref f'
|
|
|| ' WHERE d.flag_terze_parti = 1'
|
|
|| ' AND b.lov_name = ''PROCESS'''
|
|
|| ' AND c.lov_name = ''XML_FILE_TYPE'''
|
|
|| ' AND c.lov_id = f.lov_id'
|
|
|| ' AND f.lov_id_ref = b.lov_id'
|
|
|| ' AND c.NAME != ''K'') e'
|
|
|| ' WHERE TRUNC (SYSDATE) + :starthour / 24 < a.data_eff(+)'
|
|
|| ' AND TRUNC (SYSDATE) + :endhour / 24 >= a.data_eff(+)'
|
|
|| ' AND e.desc_olo = a.mittente(+)'
|
|
|| ' AND e.tipo_file = a.tipo_file(+)'
|
|
|| ' GROUP BY e.desc_olo, e.tipo_processo_descr, e.tipo_file_descr';
|
|
DBMS_OUTPUT.put_line ( 'apro il file '
|
|
|| 'MNP'
|
|
|| '.'
|
|
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
|
);
|
|
file1 :=
|
|
UTL_FILE.fopen (nomefile,
|
|
'MNP' || '.' || TO_CHAR (SYSDATE, 'yyyyMMdd'),
|
|
'a'
|
|
);
|
|
|
|
OPEN cur_valore
|
|
FOR sql_stmt USING starthour, endhour;
|
|
|
|
data_val := SYSDATE;
|
|
|
|
LOOP
|
|
FETCH cur_valore
|
|
INTO rec_valore;
|
|
|
|
EXIT WHEN cur_valore%NOTFOUND; -- process record
|
|
UTL_FILE.put_line (file1,
|
|
nomeindicatore
|
|
|| ';'
|
|
|| rec_valore.desc_olo
|
|
|| '-:-'
|
|
|| rec_valore.tipo_processo_descr
|
|
|| '-:-'
|
|
|| rec_valore.tipo_file_descr
|
|
|| ';'
|
|
|| rec_valore.valore
|
|
|| ';'
|
|
|| frequenza
|
|
|| ';'
|
|
|| hostaria
|
|
|| ';'
|
|
|| TO_CHAR (data_val, 'yyyymmdd')
|
|
|| ';'
|
|
|| TO_CHAR (data_val, 'hh24:mi:ss')
|
|
|| ';'
|
|
|| TO_CHAR (SYSDATE, 'yyyymmdd')
|
|
|| ';'
|
|
|| TO_CHAR (SYSDATE, 'hh24:mi:ss')
|
|
|| ';'
|
|
|| '0'
|
|
|| ';'
|
|
|| rec_valore.desc_olo
|
|
|| '-:-'
|
|
|| rec_valore.tipo_processo_descr
|
|
|| '-:-'
|
|
|| rec_valore.tipo_file_descr
|
|
|| ';;'
|
|
);
|
|
END LOOP;
|
|
|
|
CLOSE cur_valore;
|
|
|
|
UTL_FILE.fflush (file1);
|
|
UTL_FILE.fclose (file1);
|
|
DBMS_OUTPUT.put_line ( 'chiudo il file '
|
|
|| 'MNP'
|
|
|| '.'
|
|
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
|
);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
DBMS_OUTPUT.put_line (SQLERRM);
|
|
END;
|
|
/ |