SQL*Plus Ausgabe enthält auch Eingabe

mprusi

Grünschnabel
Hallo benötige Hilfe:
Schreibe das Ergebnis einer Abfrage zwecks Weiterverarbeitung z.B. in Access mit SPOOL in eine txt-Datei. Hierbei wird jedoch jeweils auch die Eingabe, also die SQL-Statements mit in die Datei geschrieben.
Wie kann ich das verhindern? Mit set feedback off und set heading of gehts nicht.
Danke für eine entsprechende Antwort
 
Hallo,

Du kannst die Eingabe vorab starten:

Code:
Define VORNAME = &deinvorname
Danach erst beginnst Du das Spoolen. Mit dem Skriptstart kommt dann die Abfrage
Enter value for deinvorname:
Der Parameter VORNAME hat dann seinen Wert, und im Skript greifst Du auf diesen zu mit '&&VORNAME'


Gruss
m3000
 
Zunächst Danke für die Antwort!
Aber, entweder habe ich das Problem nicht deutlich genug beschrieben und/oder ich verstehe die Antwort nicht.

Das Ergebnis meiner Abfrage wird in eine txt.-Datei geschrieben, aber auch der SQL-Code. Siehe unten. Ich möchte aber das Ergebnis ohne die Code-Zeilen haben, im sie entsprechend weiterverarbeiten zu können.
set echo off
set feedback off
set heading off
set pagesize 0
select KO.ozt, '|', count(KO.ozt) as Anzahl
from pkv.itd_kontakt KO
where KO.ozt between '9950' and '9959' and
KO.abschluss = 1 and
KO.k_klasse = 'F' and
KO.kontaktabschluss between '01.01.2005' and '11.01.2005'
group by KO.ozt, KO.ozt;
9950 | 8
9951 | 2
9952 | 10
9953 | 3
9954 | 9
9955 | 4
9956 | 7
9957 | 10
9958 | 103
9959 | 12
spool off
 
ECHO OFF wirkt nur, wenn du das Statement in einem Script ausführst und nicht interaktiv in SQL*Plus pastest.
Also alles in eine Datei.sql speichern und in SQL*Plus mit @datei.sql ausführen.
 
Danke für die Antwort.
Die Abfrage habe ich natürlich als name.sql abgespeichert. Ich öffne sie und führe sie dann aus.
Was bedeutet "mit @datei.sql ausführen"; wie geht das?
Gruß mprusi
 
Hallo Exceptionfault,
mittels deines Tipps habe ich es jetzt geschafft:
SQL Worksheet: Arbeitsplatz -> lokales Skript ausführen
Nochmals vielen Dank.
mprusi
 
Freut mich, dass es geklappt hat. Ich nutze eigentlich immer nur die "Dos" Variante von SQL*Plus. Hat den Vorteil, dass man sich mit Windows und Unix/Linux nicht so groß umgewöhnen braucht wenn man nur über Terminal auf manche Datenbanken kommt...

In SQL*Plus ist ein @ der "Befehl" um ein externes Script auszuführen. Dabei kann man auch die Endung .sql weglassen.

Code:
SQL> @c:\test.sql

Ich brauche sogar nichtmal SQL*Plus offen zu haben, sondern kann das Script direkt aus der Kommandozeile ausführen:

Code:
C:\>sqlplus scott/tiger@testdb @test.sql
 
Zurück