【问题标题】:Is possible write in xls file and open the file when executed using plsql developer?使用plsql开发人员执行时可以写入xls文件并打开文件吗?
【发布时间】:2020-08-10 09:46:13
【问题描述】:

我有一个使用utl_file 在 Xls 文件中编写报告的过程。

这个过程可以正常工作,但我的问题是:执行后是否可以直接在 Excel 中打开这个文件?我问它是因为,当它现在执行时,我必须打开文件夹路径,然后打开 Xls 文件。

我的编辑代码:

  create or replace procedure write_file_daily(emp_id in number,Start_date in  date,End_date in date, Job_Name in varchar2 ) is
 file_handle UTL_FILE.file_type;
begin
  file_handle := utl_file.fopen('CSV_DIR', 'REP.xls', 'W');
  utl_file.put_line(file_handle, 'id'||   CHR(9) || 'name' ||   CHR(9) || 'department' ||   CHR(9) || 'unit' || CHR(9) || 'position' ||   CHR(9) || 'job' 
    );
  for rws in (
    select ID,
       NAME,
       DEPARTMENT,
       UNIT,
       POSITION,
       JOB  
  from (select t.ID1  as ID,
               t.NAME as Name,
               (select d.divname from compdivs d where d.divid = t.COMP_id2) as DEPARTMENT, 
               decode((select d.parent1name from compdivs d where d.divid = t.COMP),
                       'XXX',
                       (select d.divname from compdivs d where d.divid = t.COMP),
                       (select d.parent1name from compdivs d where d.divid = t.COMP)) as UNIT,
               (select d.dname from const_dt d where d.mid = 3 and d.no = t.WORKK) as Position,
               (select d.dname from const_dt d where d.mid = 8 and d.no = t.EDUCATION_ID) as Job,
          from    th1 t  
      )
 WHERE ( ID = emp_id or  emp_id = -1)
  and (Day_date  between    Start_date   and   End_date    )
   and( NVL(lower(JOB),' ') like NVL(lower('%'||  Job_Name ||'%'),NVL(lower(JOB),' ')))  
   )

  loop
    utl_file.put_line(file_handle,  rws.id ||   CHR(9) || rws.name ||   CHR(9)  || rws.department ||   CHR(9) || rws.unit ||   CHR(9) || rws.position ||   CHR(9) || rws.job  
    );
  end loop;
  utl_file.fclose(file_handle);
  
end write_file_daily;

【问题讨论】:

  • 嗨,M。欢迎在 StackOverflow 上发帖。谢谢你的问题。但是,请不要发布代码链接。代码应包含在问题中,以最大化对社区的价值。此处提示:How to AskMinimal, Complete, and Verifiable example。亲切的问候。
  • 有什么方法可以用不到 113 行代码说明您遇到的具体问题吗?
  • 您实际上可以在excel导出完成所有信息后在浏览器中打开excel文件。
  • 感谢您的重播,我编辑了我的帖子并将我的代码放在@Elletar 上方
  • 嗨,Willam,感谢您的重播,我有一个带有数据库 oracle 的 Windows 应用程序,我必须做一份报告,但总的来说,这需要很长时间,所以我使用 utl_file。

标签: oracle plsqldeveloper utl-file


【解决方案1】:

在我看来,您想要从 PLSQL Developer 中启动外部程序(在您的情况下为 MS Excel)的功能,由 SQL/PLSQL 脚本执行触发,理想情况下将脚本结果作为输入参数。我可以想象它会很酷,并且过去以这种方式进行了一些探索,但不幸的是,PLSQL Developer 似乎没有提供任何此类功能。

(注意我的意思是客户端机器,而不是数据库服务器。在数据库服务器端,有someways 来调用操作系统命令,但我希望它不适用于您的情况,因为您的数据库服务器可能与您的客户端计算机。)

【讨论】:

  • 谢谢,@Tomas 你的回答对我很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2019-06-25
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多