我正在编写一个使用Oracle 11g移动某些文件的过程。在任何给定的日期都可以生成大约5种不同类型的log / dsc文件。虽然并非所有这些都可以保证创建。我计划用附加日期重命名该文件并移动到相应的子目录。
我理想地让这个程序一举移动所有文件。我从来没有在PL / SQL中尝试过这个。
我通常使用一组文件名并迭代它们。但我不确定如何在Oracle中执行此操作。我目前的解决方案是逐字调用该过程并每次将文件名作为参数传递给它。但是我想要更自动化的东西,并且不确定如何继续。
CREATE OR REPLACE PROCEDURE FTP_MOVER(i_dir VARCHAR2, i_file VARCHAR2) AS
v_file_append VARCHAR2(50);
v_file_rename VARCHAR2(50);
v_destination_dir VARCHAR2(50);
BEGIN
-- append date
v_file_append := TO_CHAR(TRUNC(SYSDATE), 'YYYYMMDD');
-- new file name
v_file_rename := v_file_append||i_file;
IF SUBSTR(i_file, -3) = 'log' THEN
-- set log destination dir
v_destination_dir := 'HISTORY_LOG';
ELSE IF SUBSTR(i_file, -3) = 'dsc' THEN
-- set log destination dir
v_destination_dir := 'HISTORY_DSC';
END IF;
END IF;
-- move log file to history/log
UTL_FILE.FRENAME(i_dir,
i_file,
v_destination_dir,
v_file_rename);
END FTP_TIDY;