donc tu n'es pas concerné par la citation que tu as faite. Créer une DIRECTORY et indique celle-ci comme non de répertoire. Penses à utiliser la fonction de recherche :) (respecte ta signature en somme :aie:)
Version imprimable
donc tu n'es pas concerné par la citation que tu as faite. Créer une DIRECTORY et indique celle-ci comme non de répertoire. Penses à utiliser la fonction de recherche :) (respecte ta signature en somme :aie:)
OK, mais ce que tu ne sais pas non plus, c'est que ce script sera exécuté sur différents sites clients où la base de données est identique, MAIS le chemin du répertoire qui contiendra les fichiers de sortie (CSV) sera TOUJOURS différent ! Un coup l'utilisateur choisira de les stocker sur son bureau, sur le lecteur D:\ etc. :aie:
Je ne peux donc pas connaître à l'avance quel sera ce fameux répertoire et donc pas lancer la non moins fameuse ligne de code (merci Google :mrgreen:) :
Code:
1
2
3 SQL> CREATE DIRECTORY FICHIERS_OUT AS 'c:\chemin\de\mes\fichiers\de\sortie' ; SQL> GRANT READ, WRITE ON DIRECTORY FICHIERS_OUT TO PUBLIC ;
:ouin:
les fichiers seront créés sur le serveur et pas sur le client. Il faudra donc les récupérer via FTP par exemple.
Sinon, il faut générer un fichier SQL avec les 4 spools différents.
Exemple :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SET SERVEROUTPUT ON SPOOL exec_sql.sql BEGIN FOR i IN 1..4 LOOP DBMS_OUTPUT.PUT_LINE('SPOOL mon_fichier_num_'||i.azazazazazaza||'.txt'); DBMS_OUTPUT.PUT_LINE('SELECT ''code;volet;code_2;code_3;date_semaine'' FROM dual;'); -- La requête dont les résultats seront séparés par des ";" (CSV) DBMS_OUTPUT.PUT_LINE('SELECT ''03;'' ||'); DBMS_OUTPUT.PUT_LINE(' ''V'' || tmp.tatatatatata ||'';''||'); DBMS_OUTPUT.PUT_LINE(' SUBSTR(tmp.ryryryryryryryr, 1, 9) ||'';''||'); DBMS_OUTPUT.PUT_LINE(' tmp.ryryryryryryryryr ||'';''||'); DBMS_OUTPUT.PUT_LINE(' tmp.vbvbvbvbvbvbvbvbv'); DBMS_OUTPUT.PUT_LINE('FROM tmp_stats tmp'); DBMS_OUTPUT.PUT_LINE('WHERE tmp.azazazazazaza = ' || i || ';'); DBMS_OUTPUT.PUT_LINE('SPOOL OFF'); END LOOP; END; / SPOOL OFF @exec_sql
Merci pour tout !
Je suis parti de l'exemple ci-avant que j'ai modifié à ma sauce et tout roule ! 8-) :king: