【发布时间】: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 Ask 和 Minimal, Complete, and Verifiable example。亲切的问候。
-
有什么方法可以用不到 113 行代码说明您遇到的具体问题吗?
-
您实际上可以在excel导出完成所有信息后在浏览器中打开excel文件。
-
感谢您的重播,我编辑了我的帖子并将我的代码放在@Elletar 上方
-
嗨,Willam,感谢您的重播,我有一个带有数据库 oracle 的 Windows 应用程序,我必须做一份报告,但总的来说,这需要很长时间,所以我使用 utl_file。
标签: oracle plsqldeveloper utl-file