Я пытаюсь вывести некоторую информацию о мониторинге в файл .csv.Я должен придерживаться "Basic" рамки кода.Проблема заключается в том, чтобы заставить его выводить в .csv / получать код для компиляции.
Я пробовал разные способы сделать это, теперь я застрял, я в основном обнаруживаю, что двигаю кавычки и двойные кавычки.
create or replace procedure WRITE_EST_SIZE_01 is
file_handle UTL_FILE.file_type;
begin
file_handle := utl_file.fopen('ESTIMATES_CSV',
'csv_filename' ||
to_char(sysdate,'MONYYYY')||'.csv',
'w', 32767);
for rws in (SELECT 'OWNER' || ',' ||
'SEGMENT_NAME' || ',' ||
'U' || ',' ||
'SUM_BYTES'
FROM
union ALL
select /*+ parallel*/
s.owner || ',' ||
s.segment_name || ',' ||
'U' || ',' ||
sum(s.bytes)/1024/1024
from DBA_SEGMENTS s
where s.owner = (select distinct targetschema
from pdu.pdu_table) and
s.segment_name in (select table_name
from another_table) and
s.segment_type LIKE '%TABLE%'
group by s.owner, s.segment_name
union all
select /*+ parallel*/
i.table_owner || ',' ||
i.table_name || ',' ||
'I' || ',' ||
sum(s.bytes)/1024/1024
from DBA_SEGMENTS s,
DBA_INDEXES i
where i.table_owner = (select distinct targetschema
from pdu.pdu_table) and
i.table_name in (select table_name
from another_table) and
i.owner = s.owner and
i.index_name = s.segment_name and
s.segment_type like '%INDEX%'
group by i.table_owner, i.table_name
union all
select /*+ parallel*/
l.owner || ',' ||
l.table_name || ',' ||
'L' || ',' ||
sum(s.bytes)/1024/1024
from DBA_SEGMENTS s,
ALL_LOBS l
where l.owner = (select distinct targetschema
from another_table) and
l.table_name in (select table_name
from another_table) and
l.owner = s.owner and
l.segment_name = s.segment_name
group by l.owner, l.table_name
--order by 1, 2)
loop
utl_file.put_line(file_handle,
rws.OWNER || ',' ||
rws.SEGMENT_NAME || ',' ||
rws.U || ',' ||
rws.SUM_BYTES -- your columns here
);
end loop;
utl_file.fclose(file_handle);
end WRITE_EST_SIZE_01;
Это на самом деле не компилируется, но жалуетсячто rws.OWNER должен быть объявлен.Он компилируется, если я поставлю все rws.в кавычках, но затем вывод csv перезаписывается тем, что находится в кавычках.Может кто-нибудь увидеть способ сделать это, когда он на самом деле "будет" сбросить вывод SQL в CSV?