2010-02-19 5 views
7

Ich möchte mehr als 200 Select Abfragen ausführen und die Ergebnisse an eine Datei anhängen. Alle Abfragen sind identisch mit dem einzigen Unterschied in der Datum-Zeit-Variablen. Ich habe keine Privilegien, um eine Routine zu erstellen, deshalb musste ich alle Abfragen erstellen. Ich habe keine Berechtigungen zum Erstellen einer Ansicht oder einer anderen Tabelle zum Speichern der Ergebnisse. Ich habe keinen Zugriff auf PL/SQL.Oracle 10g - Schreiben Sie Abfragen Ergebnisse in Datei

Jetzt muss ich einen Bericht mit den Ergebnissen von jeder dieser Abfragen erstellen (alle Ergebnisse sind ganze Zahlen), aber ich finde nicht eine andere Lösung, sondern eine nach der anderen zu laufen und die Ergebnisse eins nach dem anderen zu kopieren .

Jeder von euch wunderbare Gehirne kann mir dabei helfen? Es ist dringend.

Antwort

4

1 - Legen Sie Ihre Fragen in einer Textdatei wie folgt:

set pagesize 0; 

select some_field 
from some_table; 

select another_field 
from another_table; 
/

2 - Speichern Sie es irgendwo (lass uns sa yc: \ my_file.sql)

3 - Führen Sie diese an der Eingabeaufforderung:

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

4 - Ansehen "output.txt"

+0

Er müsste immer noch das Echo aussetzen, aber nicht wahr? Würde die Abfragezeichenfolge andernfalls nicht in der Ausgabe enthalten sein? – FrustratedWithFormsDesigner

+0

Ausgezeichnet Joseph. Werde das auch versuchen. Vielen Dank!! – Daniel

+0

Obwohl die Abfrage nicht in der Ausgabe enthalten ist, lautet der Spaltenname. Gibt es eine Möglichkeit, davon zu fahren? – Daniel

2

Sie können Ihre Ausgabe in eine Datei spoolen.

Siehe den Befehl spool (URL - Oracle 10.2 Benutzerhandbuch).

auch:

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

Und was scheint einige Layout-Tipps zu sein:

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

+0

Bereits ausprobiert, und es hat nicht ganz gut funktioniert. Es speichert die Abfragezeichenfolge und es bricht auch, wenn ich 10 Abfragen zur gleichen Zeit ausführen. – Daniel

+0

Probieren Sie 'set echo off;', bevor Sie die Abfrage ausführen. Dies verhindert, dass die Abfragezeichenfolge angezeigt wird. Natürlich war von "echo" am Anfang des Skripts eingeschaltet, stellen Sie sicher, es am Ende wieder zu aktivieren. Lass die Dinge immer in dem Zustand, in dem du sie gefunden hast;) – FrustratedWithFormsDesigner

+0

Werde das versuchen. – Daniel

0

Wenn Sie Zugriff auf sqlplus haben, können Sie laufen anonyme PL/SQL-Blöcke.

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