簡體   English   中英

Oracle 18c - PL/SQL 限制寫入文件的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM