我是一名报告分析师,他被要求学习一些PL / SQL以自动化某些流程。所以我差不多完成了,只有一步挡在路上。我有一个包
我正在尝试使用通配符删除它创建的3个文件,但我不断收到错误,例如“vendor_file.ia。*。txt未定义”:
我可以删除它没问题:
utl_file.fremove(file_location,'vendor_file.ia.09.02.2015.txt');
utl_file.fremove(file_location,'vendor_file.il.09.02.2015.txt');
utl_file.fremove(file_location,'vendor_file.sd.09.02.2015.txt');
但很明显,下个月运行时不会删除它。所以我错过了一个简单的通配符来搜索'vendor_file.ia。*'并且语法是否在Oracle中查找?
如果我没有提供足够的信息,请告诉我!
非常感谢!
答案 0 :(得分:1)
旧帖但......
您可以将外部表列出目录文件内容。 然后,您可以编写一个循环以从外部表中获取文件名并执行utl_file.fremove
答案 1 :(得分:0)
您可以使用预处理器运行shell脚本来删除文件。 Oracle docs on preprocessor
答案 2 :(得分:0)
这可用于清除Oracle目录中的多个文件
begin
for i in (select filename from (select * from
table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DIR_NAME')) order by mtime) where filename like
'backup%')
loop
UTL_FILE.FREMOVE ('DIR_NAME', i.filename );
end loop;
end;
/
答案 3 :(得分:-1)
我们如何使用Oracle Scheduler调度此脚本:
begin
for i in (select filename from (select * from
table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DIR_NAME')) order by mtime) where filename like
'backup%')
loop
UTL_FILE.FREMOVE ('DIR_NAME', i.filename );
end loop;
end;
/