среда, 3 августа 2011 г.

Использование dbms_output в SQL*Plus и производных продуктах

При разработке на PL/SQL в SQL*Plus или продуктах, его использующих, часто возникает необходимость использования вывода результатов не в табличном, а простом, текстовом виде. Для этого используется PL/SQL пакет dbms_output.

Например, чтобы вывести строку 'Hello, World!', необходимо написать следующий код:

dbms_output.put_line('Hello, World!');

Код корректен - однако, приветствие миру вы, вероятно, не увидите. Для включения вывода пакета dbms_output необходимо добавить следующую строку:

set serveroutput on

Теперь можно использовать dbms_output на всю катушку:

set serveroutput on
begin
  for x in (select id, name from authors) loop
    dbms_output.put_line('Автор ' || rpad(x.name, 30) || ' имеет идентификатор ' || x.id);
  end loop;
end;

При выводе больших строк, возможно, вы столкнетесь с ошибкой buffer overflow, limit of 20000 bytes, сообщающую о переполнении буфера в 20000 байт. Для увеличения размера буфера можно использовать следующую команду:

DBMS_OUTPUT.ENABLE(500000);

Удачного дебага!

Комментариев нет:

Отправить комментарий