Команда 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 символов продолжайте во второй