[英]Oracle 18c - PL/SQL limiting records written to file
我有一個過程,它創建一個文件,其中包含從游標返回的盡可能多的記錄。 由於下游文件大小問題,我想將每個文件限制為 ~500k(n) 條記錄(從參數表派生的值)。 如果游標中有超過 500k(n) 條記錄,則應創建一個具有較新時間戳的新文件。 該過程使用以下步驟。
set v_date = to_char(SYSDATE, 'YYYYMMDDHH24MISS');
set new_file_name = 'new_file_'|| v_date
open record cursor
loop
fetch bulk collect with 1000 record limit
for loop
write records to file
end loop
clear cache
close cursor loop
在否決投票之前,如果您需要更多信息,請發表評論。 我正在尋找最簡單的解決方案以及最有效的解決方案。
你需要三個循環。 外循環管理每個文件,中間循環獲取記錄,內循環寫入記錄。 所以,調整你的偽代碼......
open record cursor
loop
fetch bulk collect with 1000 record limit
exit when 0
record_count := 0;
utl_file.fopen(dir, 'new_file_'||to_char(SYSDATE, 'YYYYMMDDHH24MISS'), 'W');
loop
for loop
write records to file
end loop
record_count := record_count + 1000;
if record_count = 50000 then exit;
fetch bulk collect with 1000 record limit
exit when 0
end loop
close file
end loop;
close record cursor;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.