Вопрос:
Я попытался отлаживать свой динамический запрос с помощью dbms_output, но кажется, что строка запроса слишком длинна для буфера dbms_output.
Я получил:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at «SYS.DBMS_OUTPUT», line 148 ORA-06512: at line 1
Любая идея о том, как увеличить размер буфера?
Лучший ответ:
Вы можете включить DBMS_OUTPUT и установить размер буфера. Размер буфера может быть от 1 до 1000000.
dbms_output.enable(buffer_size IN INTEGER DEFAULT 20000); exec dbms_output.enable(1000000);
Отметьте
ИЗМЕНИТЬ
В соответствии с комментарием, опубликованным Фрэнком и Мат, вы также можете включить его с помощью Null
exec dbms_output.enable(NULL);
buffer_size. Верхний предел, в байтах, объема буферизованной информации. Установка buffer_size в NULL указывает, что не должно быть ограничений. Максимальный размер составляет 1 000 000, а минимум – 2000, когда пользователь указывает buffer_size (NOT NULL).
Ответ №1
Когда размер буфера будет заполнен. Есть несколько вариантов, которые вы можете попробовать:
1) Увеличьте размер буфера DBMS_OUTPUT до 1 000 000
2) Попробуйте фильтровать данные, записанные в буфер – возможно, существует цикл, который записывает в DBMS_OUTPUT, и вам не нужны эти данные.
3) Вызовите ENABLE на разных контрольных точках в вашем коде. Каждый вызов очищает буфер.
DBMS_OUTPUT.ENABLE(NULL) по умолчанию будет 20000 для обратной совместимости Документация Oracle по dbms_output
Вы также можете создать свой пользовательский вывод display.something, как ниже фрагменты
create or replace procedure cust_output(input_string in varchar2 ) is out_string_in long default in_string; string_lenth number; loop_count number default 0; begin str_len := length(out_string_in); while loop_count < str_len loop dbms_output.put_line( substr( out_string_in, loop_count +1, 255 ) ); loop_count := loop_count +255; end loop; end;
Ссылка -Ref: Альтернатива dbms_output.putline
@Автор: Alexander
Ответ №2
Здесь вы идете:
DECLARE BEGIN dbms_output.enable(NULL); — Disables the limit of DBMS — Your print here ! END;