2010-11-10 5 views
2

J'ai un rapport que je dois exporter dans un fichier csv pour un nombre de fournisseurs. J'ai le sentiment que je vais devoir le faire plus d'une fois donc je voudrais l'automatiser autant que possible. J'ai écrit le sql plus nécessaire pour un fournisseur, je me demande comment le script peut fonctionner pour chaque fournisseur. J'ai la liste des fournisseurs stockée dans la table dans la base de données, mais sachant que je ne peux pas mettre de spool dans un bloc pl/sql, je me demande comment je peux traverser chaque fournisseur pour créer leur fichier.Mise en file d'attente de plusieurs fichiers

Répondre

2

J'ai fait des choses similaires en ayant un script qui génère un script secondaire et ensuite exécute ce script. Exemple approximatif:

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

C'est un truc assez cool. Merci! – Scott

+0

Vous devrez peut-être remplacer tous les espaces qui apparaissent dans le nom d'un fournisseur avec, disons, un trait de soulignement (par exemple, 'REPLACE (r.vendor_name, '', '_')'). –

Questions connexes