Oracle采用存储过程执行sql语句,将查询到的数据导出到EXCEL中

首先,在服务器上创建一个导出文件的存储路径:

create or replace directory  DIR_EXCEL  as '/app/oracle';--注意:此处的DIR_EXCEL代表存储路径'/app/oracle';



然后,创建存储过程如下:create or replace procedure PRC_TASK_EXCEL is



  out_file    utl_file.file_type; --定义一个文件类型
  v_begindate varchar2(23);
  v_enddate   varchar2(23);
begin


  v_begindate := '2017-05-23 00:00:00';
  v_enddate   := '2017-05-24 00:00:00';
  out_file    := utl_file.fopen('DIR_EXCEL', 'aaa.xls', 'W');


  --抬头
  utl_file.put(out_file, '日期' || chr(9));
  utl_file.put(out_file, '电话' || chr(9));
  utl_file.put_line(out_file, '');


  for o in (select c.send_date || chr(9) vin, c.mobile || chr(9) autoid
              from sms_business_userinfos_crm c
             where c.create_time between v_begindate and v_enddate) loop
    utl_file.putf(out_file, o.vin);
    utl_file.put(out_file, o.autoid);
    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); --关闭文件流


  --处理异常
exception
  when others then
    rollback;
    prc_log_new(SYSDATE, 'error');
  utl_file.fclose(out_file); --关闭文件流,防止异常关闭

end PRC_TASK_EXCEL;


该存储过程只执行将一条sql语句查询到的数据导出到EXCEL中,如果想在一个过程中导出多个excel,可以复制该段代码粘贴到下方,改变sql和导出文件的名称即可。运行时,会一次执行导出操作!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值