2010-02-19 9 views
7

Je souhaite exécuter plus de 200 requêtes de sélection et ajouter les résultats dans un fichier. Toutes les requêtes sont identiques à la seule différence dans la variable date-heure. Je n'ai pas de privilèges pour créer une routine, c'est pourquoi j'ai dû créer toutes les requêtes. Je n'ai pas les privilèges pour créer une vue ou une autre table pour stocker les résultats. Je n'ai pas accès à PL/SQL.Oracle 10g - Écrire les résultats des requêtes dans le fichier

Maintenant, je dois créer un rapport avec les résultats de chacune de ces requêtes (tous les résultats sont des nombres entiers) mais je ne trouve pas d'autre solution que de les exécuter un par un et de copier les résultats un par un .

N'importe lequel de vous des cerveaux merveilleux peut me donner un coup de main à ce sujet? C'est un peu urgent.

Répondre

4

1 - Mettez vos requêtes dans un fichier texte comme ceci:

set pagesize 0; 

select some_field 
from some_table; 

select another_field 
from another_table; 
/

2 - Enregistrez-le quelque part (soyons sa YC: \ my_file.sql)

3 - Exécutez ce à l'invite de commande:

c:\>sqlplus -s username/[email protected] <tmp.sql> output.txt 

4 - Regardez à l'intérieur "sortie.txt"

+0

Il devrait encore «se faire écho», cependant, n'est-ce pas? Sinon, la chaîne de requête ne serait-elle pas dans la sortie? – FrustratedWithFormsDesigner

+0

Excellent Joseph. Je vais essayer celui-ci aussi. Je vous remercie!! – Daniel

+0

Bien que la requête ne figure pas dans la sortie, le nom de la colonne est. Y a-t-il un moyen d'en faire un tour? – Daniel

2

Vous pouvez spouler votre sortie dans un fichier.

Voir la commande spool (URL - Oracle 10.2 guide de l'utilisateur).

aussi:

http://www.praetoriate.com/t_garmany_easysql_the_spool_command.htm

Et ce qui semble être quelques conseils de mise en page:

http://www.oracle.com/technology/oramag/code/tips2004/020904.html

+0

Déjà essayé et ça ne marchait pas très bien. Il stocke la chaîne de requête et aussi, il casse si je cours 10 requêtes en même temps. – Daniel

+0

Essayez 'set echo off;' avant d'exécuter la requête. Cela empêche la chaîne de requête d'être affichée. Bien sûr, 'echo' était activé au début du script, assurez-vous de le rallumer à la fin. Toujours laisser les choses dans l'état où vous les avez trouvées;) – FrustratedWithFormsDesigner

+0

Je vais essayer celui-là. – Daniel

0

Si vous avez accès à sqlplus, vous pouvez exécuter blocs PL/SQL anonymes.

DECLARE 
v_cnt number; 
BEGIN 
select ... into v_cnt ...; 
dbms_output.put_line(v_cnt); 
END; 
. 
spool out.log 
/
spool off