0

我有一个目录中的文件列表,/XX/XX_XX/XX文件名后面的日期为 YYYYMMDD

文件20130726.xxx
文件20130727.xxx
文件20130728.xxx
文件20130729.xxx
文件20130730.xxx
文件20130731.xxx

我需要获取当前系统日期并选择具有匹配日期的文件

示例:(系统日期 7/31/2013 = 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 回答