Команда SET SERVEROUTPUT

Команда SET SERVEROUTPUT является одной из самых важных и позволяет указывать, должен ли вывод сегмента кода PL/SQL или хранимой процедуры отображаться на экране. В случае установки для переменной SERVEROUTPUT значения ON (SERVEROUTPUT ON),вывод будет отображаться. По умолчанию значением этой переменной является OFF;это может вызвать недоумение при выполнении блока PL/SQL, который точно должен выводить что-то на экран, но не выводит.

Ниже приведен пример использования переменной SERVEROUTPUT для отображения вывода при обработке пакета DBMS_OUTPUT. В этом пакете содержится процедура PUT_LINE, которая выводит строку. Установка для переменной SERVEROUTPUT значения ON позволяет сделать так, чтобы вывод, распечатываемый этой процедурой PUT_LINE, отображался на экране. 

SET SERVEROUTPUT ON
BEGIN
dbms_output.put_line('Первая строка');
dbms_output.put_line('Вторая строка');
dbms_output.put_line('Последняя строка');
END;
SQL> /
Первая строка
Вторая строка
Последняя строка
PL/SQL procedure successfully completed.
SQL>

Если не установить значение ON для переменной SERVEROUTPUT в этом примере, никакого вывода процедуры PUT_LINE увидеть не удастся.

Для указания того, каким образом должен форматироваться вывод, в команде SERVEROUTPUT можно использовать конструкцию FORMAT. Эта конструкция принимает одно из следующих значений: WRAPPED, WORD_WRAPPED или TRUNCATED. По умолчанию ее значением является WRAPPED, указывающее, что вывод должен размещаться в пределах длины, заданной в LINESIZE, и что там, где требуется, должен автоматически осуществляться переход на новую строку. Что касается двух остальных значений — WORD_WRAPPED и TRUNCATED — то их действие лучше продемонстрировать с помощью коротких примеров.

Значение WORD_WRAPPED в конструкции FORMAT указывает, что каждая строка вывода должна сворачиваться до длины, заданной в значении переменной LINESIZE, и что в случае, если в конце строки не умещается целое слово, строка должна оканчиваться перед этим словом.

 

SQL> SET SERVEROUTPUT ON FORMAT WORD_WRAPPED
SQL> SET LINESIZE 20
SQL> BEGIN
2 > dbms_output.put_line('После первых 20 символов, пожалуйста,');
3 > dbms_output.put_line('продолжайте во второй строке');
4 > END;
5 > /
После первых 20
символов, пожалуйста,
продолжайте во
второй строке

Значение TRUNCATED в конструкции FORMAT указывает, что каждая строка отображаемого вывода должна усекаться точно в соответствии с длиной, заданной в переменной LINESIZE.

 

SQL> SET SERVEROUTPUT ON FORMAT TRUNCATED
SQL> SET LINESIZE 20
SQL> BEGIN
2 > DBMS_OUTPUT.PUT_LINE('После первых 20 символов, пожалуйста,');
3 > DBMS_OUTPUT.PUT_LINE('продолжайте во второй строке');
4 > END;
5 > /
После первых 20 символов
продолжайте во второй 

 

Вас заинтересует / Intresting for you:

Настройка среды SQL*Plus с пом...
Настройка среды SQL*Plus с пом... 3254 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:18:46
Автономные транзакции для разр...
Автономные транзакции для разр... 1331 просмотров Дэн Tue, 21 Nov 2017, 13:28:01
Runstats для чего нужно?
Runstats для чего нужно? 1685 просмотров Светлана Комарова Tue, 21 Nov 2017, 13:28:39
Компоненты Java в Oracle -  об...
Компоненты Java в Oracle - об... 7737 просмотров Боба Tue, 21 Nov 2017, 13:31:33
Войдите чтобы комментировать