Drucken Sie den Text im Fenster des SQL-Arbeitsblatts von Oracle SQL Developer


89

Ich verwende Oracle SQL (in SQLDeveloper mithilfe des SQL-Arbeitsblatts). Ich möchte vor meiner Auswahl eine Erklärung ausdrucken, z

PRINT 'Querying Table1';
SELECT * from Table1;

Was verwende ich zum Drucken / Anzeigen der Textausgabe? Es ist nicht Drucken, da ich dadurch den Fehler bekomme: Die Bindungsvariable Table1ist NICHT ERKLÄRT. DBMS_OUTPUT.PUT_LINE ist ein unbekannter Befehl. (Natürlich bin ich ein unerfahrener SQLDeveloper- und Oracle-Benutzer. Es muss ein Synonym für Print geben, aber ich habe Probleme, Hilfe zu finden, ohne zu wissen, was es ist.)

Antworten:


143

Geben Sie hier die Bildbeschreibung ein

für einfache Kommentare:

set serveroutput on format wrapped;
begin
    DBMS_OUTPUT.put_line('simple comment');
end;
/

-- do something

begin
    DBMS_OUTPUT.put_line('second simple comment');
end;
/

du solltest bekommen:

anonymous block completed
simple comment

anonymous block completed
second simple comment

Wenn Sie die Ergebnisse von Variablen ausdrucken möchten, finden Sie hier ein weiteres Beispiel:

set serveroutput on format wrapped;
declare
a_comment VARCHAR2(200) :='first comment';
begin
    DBMS_OUTPUT.put_line(a_comment);
end;

/

-- do something


declare
a_comment VARCHAR2(200) :='comment';
begin
    DBMS_OUTPUT.put_line(a_comment || 2);
end;

Ihre Ausgabe sollte sein:

anonymous block completed
first comment

anonymous block completed
comment2

1
In der ersten Zeile wird die Serverausgabe auf das umbrochene Format eingestellt. sollte die Serverausgabe auf das Format WRAPPED eingestellt sein;
Geographika

Ich kann das nicht zum Laufen bringen. set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual Gibt mir: select * from dual; Error report: ORA-06550: line 7, column 1: PLS-00103: Encountered the symbol "SELECT" 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action
Dwjohnston

9
In neueren Versionen von SQL Developer müssen Sie zuerst das DBMS-Ausgabefenster über die oberste Menüleiste öffnen: Ansicht> Datenbankausgabe.
Bruno Ranschaert

hätte aber den Screenshot und keinen Text haben können, wäre ein +1 haha ​​gewesen
David Mann

41
PROMPT text to print

Hinweis: Verwenden Sie "Als Skript ausführen" (F5) und nicht "Anweisung ausführen" (Strg + Eingabetaste).


1
Das ist so nützlich. Vielen Dank!
Sunlover3

Funktioniert bei mir auch mit Run Statement (Ctl + Enter).
Pascal R.

21

Sie können das Echo auf setzen:

set echo on
REM Querying table
select * from dual;

Drücken Sie in SQLDeveloper F5, um als Skript ausgeführt zu werden.


Ich hatte dies als Antwort akzeptiert, aber ich sehe, dass eine andere Antwort viel mehr Punkte hat, also habe ich meine Akzeptanz dahingehend geändert. Dies hat jedoch bei mir funktioniert und ist eine gute Antwort.
Donnerstaggeek

13

Sie können Ihren Text in eine ausgewählte Anweisung einfügen, z.

SELECT 'Querying Table1' FROM dual;

8

Die Hauptantwort ließ einen Schritt für Neuinstallationen aus, bei denen das Ausgabefenster von dbms geöffnet werden muss.

Geben Sie hier die Bildbeschreibung ein

Dann das Skript, das ich verwendet habe:

dbms_output.put_line('Start');

Ein anderes Skript:

set serveroutput on format wrapped;
begin
    DBMS_OUTPUT.put_line('jabberwocky');
end;

7

Für mich konnte ich es nur zum Laufen bringen

set serveroutput on format word_wrapped;

Der Wrapped und WRAPPED haben nur Fehler ausgelöst: Der SQLPLUS-Befehl ist fehlgeschlagen - nicht genügend Argumente


1

Wenn Sie nicht möchten, dass alle Ihre SQL-Anweisungen wiedergegeben werden, sondern nur die leicht identifizierbaren Ergebnisse Ihres Skripts sehen möchten, gehen Sie folgendermaßen vor:

Echo einschalten

REM MyFirstTable

Echo ausschalten

aus MyFirstTable löschen;

Echo einschalten

REM MySecondTable

Echo ausschalten

aus MySecondTable löschen;

Die Ausgabe des obigen Beispiels sieht ungefähr so ​​aus:

-REM MyFirstTable

13 Zeilen gelöscht.

-REM MySecondTable

27 Zeilen gelöscht.


0

Wenn ich begin-end ommit, ist es ein Fehler. Für mich funktioniert das also (nichts anderes wird benötigt):

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('testing');
end;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.