我是一名报告分析师,他被要求学习一些 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 中是否可见?
如果我没有提供足够的信息,请告诉我!
非常感谢!
这可用于从 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;
旧帖子但是...
您可以制作一个外部表列出目录文件内容。 然后,您可以编写一个循环来从外部表中获取文件名并执行 utl_file.fremove
您可以使用预处理器运行 shell 脚本来删除文件。 有关预处理器的 Oracle 文档
我们如何使用 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;
/