ポジショナルファイルにデータを書き込みたいのですが。以前にファイルに書き込まれなかったデータのみが書き込まれます。明らかに、データが以前に書き込まれたかどうかを判別するための列がテーブルにあります。
私の場合、フィールドの長さが80で、データの長さが30の場合、残りのスペースはスペースで埋められます。例えば、
----------------------------------------
| Name | SSN | Integrated |
----------------------------------------
| Doe | 453214 | Y |
| John | 1234567890 | N |
| Scarlett | 123 | N |
----------------------------------------
最初のレコードは前のファイルに転送/書き込まれました。したがって、次のファイルには転送されません。名前の長さは80文字に固定されています。したがって、名前が80文字未満の場合、残りのスペースはスペースで埋められます。こんな感じになります。他の分野についても同様です
Name SSN
John 1234567890
Scarlett 123
どうすればいいですか?前もって感謝します。IamはOracle11gを使用しています。
編集
はい、コードを書くことができます。ただし、このコードをdbms_jobsで使用できるプロシージャとして呼び出したいと思います。問題は、プロシージャの書き方がわからないことです。
DECLARE
v_file UTL_FILE.file_type;
BEGIN
v_file := UTL_FILE.fopen('DIR_VR_AD_INTEGRATION', 'HRMtoAD1_'||sysdate, 'w', 32767);
FOR x IN (select * from (select RPAD(user_id, 7, ' ') || ' ' || RPAD(pid_company_id, 10, ' ') str from arc_hrvr.vr_ad_integration where integrated = 'N') str where rownum <= 3 order by rownum)
LOOP
BEGIN
UTL_FILE.put_line(v_file, x.str);
END;
END LOOP;
UTL_FILE.fflush(v_file);
UTL_FILE.fclose(v_file);
END;