2010-11-10 92 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