2010-11-10 94 views
2

我有一份报告,我需要导出到n个供应商的csv文件。我有一种感觉,我需要不止一次地运行它,所以我想尽可能地自动运行它。我写了一个供应商所需的sql plus,我想知道如何将脚本编写成为每个供应商运行。我有供应商列表存储在数据库的表中,但知道我不能把线轴放在pl/sql块,我想知道如何循环通过每个供应商来创建他们的文件。假脱机多个文件

回答

2

我已经做了类似的事情,有一个脚本生成一个辅助脚本,然后执行该脚本。近似示例:

set serveroutput on 
set termout off 
spool temp_script.sql 
Begin 
    for r in (select * from vendors) loop 
     dbms_output.put_line('spool '||r.vendor_name||'.csv'); 
     dbms_output.put_line('data is: '||r.data); 
     /*feel free to put other output commands here */ 
     dbms_output.put_line('spool off'); 
    end loop; 
end; 
spool off 
@temp_script.sql 
+0

这是一个非常酷的技巧。谢谢! – Scott 2010-11-10 20:38:03

+0

您可能需要用供应商名称中的下划线(例如'REPLACE(r.vendor_name,'','_')')替换任何出现在供应商名称中的空格。 – 2010-11-11 04:34:48