create or replace directory DIR_EXCEL as 'd:/download/excel';--创建一个文件存储目录变量,后面存储过程会使用到,目录要在电脑上没有,要手动创建,程序不会自动创建
create or replace procedure Pro_EXCEL is
out_file utl_file.file_type; --定义一个文件类型
begin
dbms_output.put_line('开始');
out_file := utl_file.fopen('DIR_EXCEL', 'ceshiw.xls', 'W');
dbms_output.put_line('开始写文件抬头');
--抬头
utl_file.put(out_file, '项目' || chr(9));
utl_file.put(out_file, '描述' || chr(9));
utl_file.put(out_file, '金额' || chr(9));
utl_file.put_line(out_file, '');
for o in (select t.id_project || chr(9) vin, t.des || chr(9) autoid,t.amoun|| chr(9) amount
from paymentinfo t
) loop
utl_file.putf(out_file, o.vin);
utl_file.putf(out_file, o.autoid);
utl_file.putf(out_file, o.amount);
/*utl_file.put(out_file, convert('中文字', 'ZHS16GBK'));*/--汉子时转化字符格式,解决汉子乱码
utl_file.put_line(out_file, '');
end loop;
utl_file.fflush(out_file);
utl_file.fclose(out_file); --关闭文件流
dbms_output.put_line('结束');
--处理异常
exception
when others then
rollback;
dbms_output.put_line('异常');
utl_file.fclose(out_file); --关闭文件流,防止异常关闭
end Pro_EXCEL;