重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2709|回复: 0
打印 上一主题 下一主题

[范例] 如何把sql语句结果输出到excel

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-15 16:02:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果SQL语句的结果太大,通过plsql developer无法显示所有的结果,这个时候,我们可以通过一段代码来完成,下面是一个例子:


select last_name, salary, department_id
      from employees
     order by department_id
的结果显示到excel

下面是具体例子:


create or replace procedure out_excel(dir      in varchar2,
                                       filename in varchar2) is
  file utl_file.file_type;
  cursor empc is
    select last_name, salary, department_id
      from employees
     order by department_id;
begin
  file := utl_file.fopen(dir, filename, 'w');
  utl_file.put_line(file, 'report: generated on ' || sysdate);
  utl_file.new_line(file);
  utl_file.put_line(file,
                    'department_id' || chr(9) || 'name' || chr(9) ||
                    'salary');
  FOR emp_rec IN empc LOOP
    UTL_FILE.PUT_LINE(file,
                      nvl(emp_rec.department_id, '') || chr(9) ||
                      emp_rec.last_name || chr(9) || emp_rec.salary);
  END LOOP;
  UTL_FILE.PUT_LINE(file, '*** END OF REPORT ***');
  UTL_FILE.FCLOSE(file);
EXCEPTION
  WHEN UTL_FILE.INVALID_FILEHANDLE THEN
    RAISE_APPLICATION_ERROR(-20001, 'Invalid File.');
  WHEN UTL_FILE.WRITE_ERROR THEN
    RAISE_APPLICATION_ERROR(-20002, 'Unable to write to file');
  when utl_file.invalid_operation then
    RAISE_APPLICATION_ERROR(-20003, 'file operate invalid');
END out_excel;

execute  sal_status(dir =>'DIR_FILE',filename => 'outexcel.xls');

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-27 00:50 , Processed in 0.080793 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表