First Commit - Source Code from Reply
This commit is contained in:
322
dbcmnpsrc/FE/mnpapp/script/report/sql/TIM_TerzaParte.sql
Normal file
322
dbcmnpsrc/FE/mnpapp/script/report/sql/TIM_TerzaParte.sql
Normal file
@@ -0,0 +1,322 @@
|
||||
SET serveroutput on
|
||||
|
||||
|
||||
|
||||
DECLARE
|
||||
|
||||
rs1 varchar2(255);
|
||||
rs2 varchar2(255);
|
||||
operatore varchar2(15);
|
||||
operatore_donor varchar2(15);
|
||||
dir_out varchar2(255);
|
||||
num NUMBER(5,0);
|
||||
cod varchar2(15);
|
||||
cod1 varchar2(15);
|
||||
desc_olo varchar2(15);
|
||||
totale NUMBER(5,0);
|
||||
tot NUMBER(5,0);
|
||||
file1 UTL_FILE.file_type;
|
||||
count_tot NUMBER(5,0);
|
||||
num1 number(5,0);
|
||||
num2 number(5,0);
|
||||
num3 number(5,0);
|
||||
num4 number(5,0);
|
||||
num5 number(5,0);
|
||||
num6 number(5,0);
|
||||
num7 number(5,0);
|
||||
num8 number(5,0);
|
||||
num9 number(5,0);
|
||||
num10 number(5,0);
|
||||
totale1 NUMBER(5,0):=0;
|
||||
totale2 NUMBER(5,0):=0;
|
||||
totale3 NUMBER(5,0):=0;
|
||||
totale4 NUMBER(5,0):=0;
|
||||
totale5 NUMBER(5,0):=0;
|
||||
totale6 NUMBER(5,0):=0;
|
||||
totale7 NUMBER(5,0):=0;
|
||||
totale8 NUMBER(5,0):=0;
|
||||
totale9 NUMBER(5,0):=0;
|
||||
totale10 NUMBER(5,0):=0;
|
||||
data_inizio date;
|
||||
data_fine date;
|
||||
data date;
|
||||
di date;
|
||||
df date;
|
||||
ut varchar2(20);
|
||||
pippo varchar2(255):='&1';
|
||||
|
||||
|
||||
CURSOR cur_recipient is
|
||||
SELECT desc_olo
|
||||
FROM mnp_olo_report
|
||||
where flag_attivo = 1;
|
||||
|
||||
|
||||
Cursor cur_select(operatore varchar2, data_inizio date, data_fine date) is
|
||||
--select nvl(to_char(sum(a.num)),'NULL'),
|
||||
select nvl(sum(a.num),0),
|
||||
a.cod,
|
||||
a.cod1,
|
||||
b.desc_olo
|
||||
|
||||
from mnp_olo_report b,
|
||||
(
|
||||
select count(*)num,
|
||||
codice_operatore_recipient cod,
|
||||
codice_operatore_donating cod1
|
||||
from
|
||||
mnp_gestione_richiesta_porting grp,
|
||||
mnp_mss_cess_porting_in ci,
|
||||
(SELECT desc_olo desc_olo
|
||||
FROM mnp_olo_report
|
||||
where flag_attivo = 1) a
|
||||
|
||||
|
||||
where grp.stato in(4,6)
|
||||
and grp.msisdn = ci.msisdn
|
||||
and data_cut_over <> trunc(ci.data_ora_cessazione)
|
||||
and data_cut_over >= trunc(data_inizio)
|
||||
and data_cut_over <= trunc(data_fine)
|
||||
and grp.codice_operatore_donating = a.desc_olo
|
||||
and grp.codice_operatore_recipient = operatore
|
||||
group by codice_operatore_recipient , codice_operatore_donating
|
||||
|
||||
UNION
|
||||
select count(*)num,
|
||||
codice_operatore_recipient cod,
|
||||
codice_operatore_donating cod1
|
||||
from mnp_gestione_richiesta_porting grp,(SELECT desc_olo desc_olo
|
||||
FROM mnp_olo_report
|
||||
where flag_attivo = 1) a
|
||||
|
||||
where grp.stato in(1,3,5)
|
||||
and data_cut_over >= trunc(data_inizio)
|
||||
and data_cut_over <= trunc(data_fine)
|
||||
and grp.codice_operatore_donating = a.desc_olo
|
||||
and grp.codice_operatore_recipient = operatore
|
||||
group by codice_operatore_recipient , codice_operatore_donating,a.desc_olo )a
|
||||
where a.cod1(+) = b.desc_olo
|
||||
and b.flag_attivo = 1
|
||||
group by a.cod,a.cod1,b.desc_olo
|
||||
order by b.desc_olo;
|
||||
|
||||
|
||||
BEGIN
|
||||
if (pippo <> 'nullo')then
|
||||
data_inizio := to_date('&1','dd/mm/yyyy');
|
||||
data_fine := to_date('&2','dd/mm/yyyy');
|
||||
dir_out:='&3';
|
||||
|
||||
|
||||
else
|
||||
if (to_char(sysdate, 'DD')<= '15') then
|
||||
|
||||
data := add_months((trunc(sysdate)), -1);
|
||||
data_inizio := to_date('16/'|| to_char(trunc(data), 'mm/yyyy'),'dd/mm/yyyy');
|
||||
data_fine := last_day(trunc(data));
|
||||
else
|
||||
data_inizio := to_date('01/'|| to_char(trunc(sysdate), 'mm/yyyy'), 'dd/mm/yyyy');
|
||||
data_fine := to_date('15/'|| to_char(trunc(sysdate), 'mm/yyyy'), 'dd/mm/yyyy');
|
||||
end if;
|
||||
select recipient_out into dir_out
|
||||
from mnp_olo_report
|
||||
where desc_olo = 'MONIT';
|
||||
|
||||
end if;
|
||||
|
||||
|
||||
file1 := UTL_FILE.fopen (dir_out, 'TIM_TerzaParte_'||to_char(sysdate,'yyyyMMdd')||'.csv', 'w');
|
||||
|
||||
BEGIN
|
||||
UTL_FILE.put_line (file1,'Titolo: Non effettuati da TIM in qualita di OLO il giorno del cut_over');
|
||||
UTL_FILE.put_line (file1,' ');
|
||||
UTL_FILE.put_line (file1,'Periodo dal '|| trunc(data_inizio)|| ' al '|| trunc(data_fine));
|
||||
UTL_FILE.put_line (file1,' ');
|
||||
UTL_FILE.put_line (file1,'Operatore Terza Parte TIM');
|
||||
UTL_FILE.put_line (file1,' ');
|
||||
|
||||
|
||||
|
||||
|
||||
rs1:='';
|
||||
rs2:='';
|
||||
totale:=0;
|
||||
tot:=0;
|
||||
OPEN cur_recipient;
|
||||
LOOP
|
||||
FETCH cur_recipient INTO operatore;
|
||||
EXIT WHEN cur_recipient%NOTFOUND;
|
||||
|
||||
|
||||
|
||||
rs1:= rs1 ||';'|| operatore ;
|
||||
|
||||
END LOOP;
|
||||
CLOSE cur_recipient;
|
||||
rs1:=rs1 ||';'||'TOTALE';
|
||||
UTL_FILE.put_line (file1,rs1);
|
||||
UTL_FILE.fflush (file1);
|
||||
--UTL_FILE.fclose (file1);
|
||||
exception
|
||||
when others then
|
||||
DBMS_OUTPUT.PUT_LINE(sqlerrm);
|
||||
END;
|
||||
|
||||
begin
|
||||
rs1:='';
|
||||
rs2:='';
|
||||
totale:=0;
|
||||
tot :=0;
|
||||
num1 := 0;
|
||||
num2 := 0;
|
||||
num3 := 0;
|
||||
num4 := 0;
|
||||
num5 := 0;
|
||||
num6 := 0;
|
||||
num7 := 0;
|
||||
num8 := 0;
|
||||
num9 := 0;
|
||||
num10 := 0;
|
||||
OPEN cur_recipient;
|
||||
|
||||
|
||||
LOOP
|
||||
FETCH cur_recipient INTO operatore;
|
||||
EXIT WHEN cur_recipient%NOTFOUND;
|
||||
|
||||
OPEN cur_select(operatore,data_inizio, data_fine);
|
||||
|
||||
count_tot := 0;
|
||||
totale := 0;
|
||||
tot:=0;
|
||||
|
||||
|
||||
LOOP
|
||||
FETCH cur_select INTO num,cod,cod1,desc_olo;
|
||||
EXIT WHEN cur_select%NOTFOUND;
|
||||
--dbms_output.put_line('desc_olo '|| desc_olo);
|
||||
|
||||
--rs1:= cod1 ||';' || rs1 || ';'|| num ||';';
|
||||
|
||||
|
||||
|
||||
count_tot := count_tot + 1;
|
||||
rs2 := '' || rs2 || num ||';';
|
||||
|
||||
|
||||
if (count_tot = 1) then
|
||||
num1:= num + num1;
|
||||
|
||||
tot := num1 + tot;
|
||||
totale1:= totale1 + num1;
|
||||
--dbms_output.put_line('num 1 e...' || num1 || 'num...' || num ||'count_tot'||count_tot ||'operatore cod'|| cod ||'cod1'||cod1);
|
||||
end if;
|
||||
if (count_tot = 2) then
|
||||
num2:= num + num2;
|
||||
|
||||
tot := num2 + tot;
|
||||
totale2:= totale2 + num2;
|
||||
--dbms_output.put_line('num 2 e...' || num2 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 3) then
|
||||
num3:= num + num3;
|
||||
|
||||
tot := num3 + tot;
|
||||
totale3:= totale3 + num3;
|
||||
--dbms_output.put_line('num 3 e...' || num3 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 4) then
|
||||
num4:= num + num4;
|
||||
--dbms_output.put_line('tot e...' || tot);
|
||||
tot := num4 + tot;
|
||||
totale4:= totale4 + num4;
|
||||
--dbms_output.put_line('num 4 e...' || num4 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 5) then
|
||||
num5:= num + num5;
|
||||
|
||||
tot := num5 + tot;
|
||||
totale5:= totale5 + num5;
|
||||
--dbms_output.put_line('num 5 e...' || num5 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 6) then
|
||||
num6:= num + num6;
|
||||
|
||||
tot := num6 + tot;
|
||||
totale6:= totale6 + num6;
|
||||
--dbms_output.put_line('num 6 e...' || num6 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 7) then
|
||||
num7:= num + num7;
|
||||
|
||||
tot := num7 + tot;
|
||||
totale7:= totale7 + num7;
|
||||
--dbms_output.put_line('num 7 e...' || num7 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 8) then
|
||||
num8:= num + num8;
|
||||
|
||||
tot := num8 + tot;
|
||||
totale8:= totale8 + num8;
|
||||
--dbms_output.put_line('num 8 e...' || num8 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 9) then
|
||||
num9:= num + num9;
|
||||
|
||||
tot := num9 + tot;
|
||||
totale9:= totale9 + num9;
|
||||
--dbms_output.put_line('num 9 e...' || num9 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
if (count_tot = 10) then
|
||||
num10:= num + num10;
|
||||
|
||||
tot := num10 + tot;
|
||||
totale10:= totale10 + num10;
|
||||
--dbms_output.put_line('num 10 e...' || num10 || 'num...' || num ||'count_tot'||count_tot);
|
||||
end if;
|
||||
|
||||
|
||||
END LOOP;
|
||||
CLOSE cur_select;
|
||||
|
||||
UTL_FILE.put_line (file1,operatore ||';'|| rs2 || tot ||';');
|
||||
rs2 := '';
|
||||
tot := 0;
|
||||
num1 := 0;
|
||||
num2 := 0;
|
||||
num3 := 0;
|
||||
num4 := 0;
|
||||
num5 := 0;
|
||||
num6 := 0;
|
||||
num7 := 0;
|
||||
num8 := 0;
|
||||
num9 := 0;
|
||||
num10 := 0;
|
||||
|
||||
END LOOP;
|
||||
--totale := 0;
|
||||
totale:= totale1+totale2+totale3+totale4+totale5+totale6+totale7+totale8+totale9+totale10;
|
||||
UTL_FILE.put_line (file1,'TOTALE;'|| totale1 || ';'|| totale2 || ';'|| totale3 || ';'|| totale4 || ';'|| totale5 || ';'|| totale ||';');
|
||||
-- UTL_FILE.put_line (file1, arr(count_tot));
|
||||
--dbms_output.put_line('ciao fine loop ');
|
||||
|
||||
CLOSE cur_recipient;
|
||||
|
||||
|
||||
--rs1:= rs1;
|
||||
--rs2:= rs2 || totale ||';';
|
||||
--UTL_FILE.put_line (file1,rs1);
|
||||
--UTL_FILE.put_line (file1,rs2);
|
||||
UTL_FILE.fflush (file1);
|
||||
UTL_FILE.fclose (file1);
|
||||
exception
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
null;
|
||||
when others then
|
||||
DBMS_OUTPUT.PUT_LINE(sqlerrm);
|
||||
END;
|
||||
end;
|
||||
/
|
||||
exit;
|
||||
|
||||
Reference in New Issue
Block a user