0

/XX/XX_XX/XXファイル名の後に日付が YYYYMMDDであるディレクトリ内のファイルのリストがあります。

Files20130726.xxx
Files20130727.xxx
Files20130728.xxx
Files20130729.xxx
Files20130730.xxx
Files20130731.xxx

現在のシステム日付を取得し、一致する日付を持つファイルを選択する必要があります

例: (システム日付 2013 年 7 月 31 日 = File20130731.xxx)

ディレクトリから正しいシステム日付のファイルを選択する手順を作成しました

PROCEDURE xxxxxx
   uu_f_name VARCHAR2(20) := 'Files.xxx';          
   uu_infile   utl_file.file_type;
BEGIN
  CREATE DIRECTORY NEW_DIRECTORY as '/XX/XX_XX/XX';
  uu_infile := utl_file.fopen('/XX/XX_XX/XX', to_date(substr(uu_f_name,6, sysdate), 'YYYYMMDD'), 'MM/DD/YYYY', 'r');
  1. Files.xxx は実際には FilesYYYYMMDD.xxx であるため、宣言する方法がよくわかりません (「FilesYYYYMMDD」として宣言できるかどうかはわかりません)。

  2. 現在のシステム日付を選択して正しいファイルと一致させる方法に行き詰まっています。これは私が持っているものですが、正しくないことはわかっていますが、これを行う方法がわかりません。

    to_date(substr(uu_f_name,6, sysdate), 'YYYYMMDD'), 'MM/DD/YYYY', 'r');

4

1 に答える 1

0

次のことをよく理解してください。

ここには、学習できるこれらすべての科目に関する質問がたくさんあります。

開始する必要がある例:

JANI@xe> select sysdate from dual;

SYSDATE
-------------------
2013-08-01 07:52:55

JANI@xe> select 'Files.' || to_char(sysdate, 'YYYYMMDD') || '.xxx' as filename from dual;

FILENAME
------------------
Files.20130801.xxx

JANI@xe> !cat so25.sql
declare
  v_filename constant varchar2(32767) :=
    'Files.' || to_char(sysdate, 'YYYYMMDD') || '.xxx';
begin
  dbms_output.put_line('v_filename = ' || v_filename);
end;
/
JANI@xe> @so25.sql
v_filename = Files.20130801.xxx

PL/SQL procedure successfully completed.

JANI@xe>

その後、UTL_FILE問題があれば再度ご連絡いたします。

于 2013-08-01T05:18:52.407 に答える