我有一些.csv文件正在输出到电子邮件中以进行报告。我对此感到满意。但是,我想通过添加“标题”使报告更具可读性
这只是当前列结构的示例...我想在所有具有“标题”的内容之前添加一些内容
create or replace procedure EST_PROC is
file_handle UTL_FILE.file_type;
v_csv_name varchar2(40);
v_link_name varchar2(10);
begin
SELECT tablename into v_csv_name
FROM table_tracker
WHERE
CREATED_AT = (select MAX(CREATED_AT) from table_tracker);
select distinct link_name into v_link_name from link_name;
file_handle := utl_file.fopen('ESTIMATES_CSV',
v_csv_name||'.csv',
'w', 32767);
utl_file.put_line(file_handle, 'TARGET_TABLESPACE,MAX_ALLOC_GB,ALLOC_GB,USED_GB,PERC_USED');
for rws in (select TARGET_TABLESPACE,
MAX_ALLOC_GB,
ALLOC_GB,
USED_GB,
PERC_USED
from ESTIMATE where link = v_link_name)
loop
utl_file.put_line(file_handle,
rws.TARGET_TABLESPACE || ',' ||
rws.MAX_ALLOC_GB || ',' ||
rws.ALLOC_GB || ',' ||
rws.USED_GB || ',' ||
rws.PERC_USED -- your columns here
);
end loop;
utl_file.fclose(file_handle);
end EST_PROC;
^这将在服务器上的目录中创建.csv文件,我只需要一个标题即可。
答案 0 :(得分:1)
IMO,您的第一种方法(在输出.csv数据之前使用UTL_FILE.PUT_LINE编写标题)似乎很合理。
但是...如果您不满意,可以尝试通过将UNION放入其中来更改光标以在数据之前返回标题:
IS_TITLE = 'Y'
现在,当您使用TARGET_TABLESPACE
行时,仅输出IS_TITLE = 'N'
列,其中包含您的标题。如果UTL_FILE.FOPEN
以适当的格式,逗号等输出所有数据字段。
好运。
根据以下评论,在UTL_FILE.PUT_LINE(file_handle, 'G''day. This output shows blah blah blah...');
UTL_FILE.PUT_LINE(file_handle, ' ');
调用后立即添加以下内容:
{{1}}
给个机会。
祝一切顺利。
答案 1 :(得分:0)
这是你在找什么吗?
select 'Title' as Col1, TARGET_TABLESPACE,
MAX_ALLOC_GB,
ALLOC_GB,
USED_GB,
PERC_USED
from ESTIMATE where link = v_link_name