create or replace procedure sp_utl_file_yz
is
f1 utl_file.file_type;
type job_record_type is record(
log_date varchar2(11),
game_id varchar2(2),
acu varchar2(20),
pcu varchar2(20),
pay_count varchar2(20),
pay varchar2(20),
expend varchar2(20),
newlogin varchar2(20),
alive varchar2(20));
game_kpi job_record_type;
cursor cur_kpi_zx is
select to_char(log_date, 'yyyy-mm-dd')||chr(9),
game_id||chr(9),
acu||chr(9),
pcu||chr(9),
pay_count||chr(9),
pay||chr(9),
expend||chr(9),
newlogin||chr(9),
alive
from game_kpi_day;
begin
f1 := utl_file.fopen('/home/oracle/data', 'kpi_zx.data', 'w');
open cur_kpi_zx;
loop
fetch cur_kpi_zx into
game_kpi.log_date,
game_kpi.game_id,
game_kpi.acu,
game_kpi.pcu,
game_kpi.pay_count,
game_kpi.pay,
game_kpi.expend,
game_kpi.newlogin,
game_kpi.alive;
exit when cur_kpi_zx%NOTFOUND;
utl_file.put(f1, game_kpi.log_date);
utl_file.put(f1, game_kpi.game_id);
utl_file.put(f1, game_kpi.acu);
utl_file.put(f1, game_kpi.pcu);
utl_file.put(f1, game_kpi.pay_count);
utl_file.put(f1, game_kpi.pay);
utl_file.put(f1, game_kpi.expend);
utl_file.put(f1, game_kpi.newlogin);
utl_file.put_line(f1, game_kpi.alive);
end loop;
close cur_kpi_zx;
utl_file.fflush(f1);
utl_file.fclose(f1);
EXCEPTION
WHEN others THEN
IF utl_file.is_open(f1) THEN
utl_file.fclose(f1);
END IF;
end;