Печать текста в окне Oracle SQL Developer SQL Worksheet


91

Я использую Oracle SQL (в SQLDeveloper, используя SQL Worksheet). Я хочу напечатать инструкцию перед моим выбором, например

PRINT 'Querying Table1';
SELECT * from Table1;

Что я использую для печати / отображения текста? Это не Print, потому что это дает мне ошибку: Bind Variable Table1НЕ ОБЪЯВЛЯЕТСЯ. DBMS_OUTPUT.PUT_LINE - неизвестная команда. (Очевидно, я неопытный разработчик SQL и пользователь Oracle. Должен быть какой-то синоним для Print, но у меня проблемы с поиском справки, не зная, что это такое.)

Ответы:


143

введите описание изображения здесь

для простых комментариев:

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

-- do something

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

вы должны получить:

anonymous block completed
simple comment

anonymous block completed
second simple comment

если вы хотите распечатать результаты переменных, вот еще один пример:

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;

ваш вывод должен быть:

anonymous block completed
first comment

anonymous block completed
comment2

1
Первая строка устанавливает вывод сервера в обернутый формат; должен быть установлен serveroutput в формате WRAPPED;
geographika

Я не могу заставить это работать. set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual Дает мне: 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
В более новых версиях SQL Developer вам сначала нужно открыть окно вывода СУБД, используя верхнюю строку меню: Вид> Вывод СУБД.
Bruno Ranschaert

мог бы, но снимок экрана и никакого текста, был бы +1 хаха
Дэвид Манн

41
PROMPT text to print

Примечание. Необходимо использовать «Запуск от имени сценария» (F5), а не «Выполнить» (Ctrl + Enter).


1
Это так полезно. Благодарность!
sunlover3 07

У меня работает и с оператором Run (Ctrl + Enter).
Паскаль Р.

21

Вы можете включить эхо :

set echo on
REM Querying table
select * from dual;

В SQLDeveloper нажмите F5, чтобы запустить его как сценарий.


Я принял это как ответ, но вижу, что в другом ответе намного больше очков, поэтому я изменил свое согласие на это. Однако это сработало для меня, и это хороший ответ.
thursdaysgeek

13

Вы можете поместить свой текст в оператор выбора, например ...

SELECT 'Querying Table1' FROM dual;

8

Основной ответ не учитывает шаг для новых установок, когда нужно открыть окно вывода dbms.

введите описание изображения здесь

Затем я использовал сценарий:

dbms_output.put_line('Start');

Другой сценарий:

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

7

Для меня я мог заставить его работать только с

set serveroutput on format word_wrapped;

Обернутый и WRAPPED просто выдал ошибки: команда SQLPLUS не удалась - недостаточно аргументов


1

Если вы не хотите, чтобы все ваши операторы SQL отображались эхом, но вы хотите видеть только легко идентифицируемые результаты вашего скрипта, сделайте это следующим образом:

включить эхо

REM MyFirstTable

выключить эхо

удалить из MyFirstTable;

включить эхо

REM MySecondTable

выключить эхо

удалить из MySecondTable;

Результат из приведенного выше примера будет выглядеть примерно так:

-REM MyFirstTable

13 строк удалены.

-REM MySecondTable

27 строк удалены.


0

Если я опускаю начало - конец, это ошибка. Так что для меня это работает (больше ничего не нужно):

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('testing');
end;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.