Drukuj tekst w oknie arkusza Oracle SQL Developer SQL Worksheet


90

Używam Oracle SQL (w SQLDeveloper, używając arkusza SQL). Chciałbym wydrukować wyciąg przed moim wyborem, np

PRINT 'Querying Table1';
SELECT * from Table1;

Czego używam do drukowania / wyświetlania wyników tekstowych? To nie jest drukowanie, ponieważ powoduje to błąd: Zmienna powiązania Table1NIE JEST ZADEKLAROWANA. DBMS_OUTPUT.PUT_LINE to nieznane polecenie. (Oczywiście jestem niedoświadczonym użytkownikiem SQLDeveloper i Oracle. Musi istnieć synonim Print, ale mam problem ze znalezieniem pomocy, nie wiedząc, co to jest.)

Odpowiedzi:


143

wprowadź opis obrazu tutaj

dla prostych komentarzy:

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

-- do something

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

powinieneś wziąć:

anonymous block completed
simple comment

anonymous block completed
second simple comment

jeśli chcesz wydrukować wyniki zmiennych, oto kolejny przykład:

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;

Twoje wyjście powinno wyglądać następująco:

anonymous block completed
first comment

anonymous block completed
comment2

1
Wyjście serwera ustawione w pierwszej linii w formacie opakowanym; należy ustawić wyjście serwera na format WRAPPED;
geographika

Nie mogę zmusić tego do pracy. set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual Daje mi: 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
W nowszych wersjach SQL Developer musisz najpierw otworzyć okno DBMS Output używając górnego paska menu: View> Dbms Output.
Bruno Ranschaert

mógł, ale zrzut ekranu i brak tekstu, byłby +1 haha
David Mann

41
PROMPT text to print

Uwaga: należy użyć instrukcji Run as Script (F5) not Run (Ctl + Enter)


1
To jest bardzo przydatne. Dzięki!
sunlover3

Działa również dla mnie z instrukcją Run (Ctl + Enter).
Pascal R.

21

Możesz włączyć echo :

set echo on
REM Querying table
select * from dual;

W SQLDeveloper naciśnij F5, aby uruchomić jako skrypt.


Przyjąłem to jako odpowiedź, ale widzę, że inna odpowiedź ma o wiele więcej punktów, więc zmieniłem swoją akceptację na to. Jednak to zadziałało dla mnie i to dobra odpowiedź.
czwartek

13

Możesz umieścić swój tekst w instrukcji Select, takiej jak ...

SELECT 'Querying Table1' FROM dual;

8

Główna odpowiedź pomija krok dla nowych instalacji, w którym trzeba otworzyć okno wyjściowe dbms.

wprowadź opis obrazu tutaj

Następnie wykorzystałem skrypt:

dbms_output.put_line('Start');

Inny skrypt:

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

7

Dla mnie mogłem tylko zmusić to do pracy

set serveroutput on format word_wrapped;

Zawinięte i WRAPPED właśnie wyrzuciło błędy: komenda SQLPLUS nie powiodła się - za mało argumentów


1

Jeśli nie chcesz, aby wszystkie twoje instrukcje SQL były powtarzane, ale chcesz zobaczyć tylko łatwe do zidentyfikowania wyniki skryptu, zrób to w ten sposób:

włącz echo

REM MyFirstTable

wyłącz echo

usuń z MyFirstTable;

włącz echo

REM MySecondTable

wyłącz echo

usuń z MySecondTable;

Dane wyjściowe z powyższego przykładu będą wyglądać mniej więcej tak:

-REM MyFirstTable

Usunięto 13 wierszy.

-REM MySecondTable

Usunięto 27 wierszy.


0

Jeśli pominę rozpoczęcie - koniec, to błąd. Więc dla mnie to działa (nic więcej nie jest potrzebne):

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('testing');
end;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.