Из документации * SQL * Plus , которая в значительной степени относится и к SQL Developer:
TERMOUT OFF не влияет на вывод команд, вводимых вами в интерактивном режиме
Если у вас есть set termout off
в файле сценария и вы запускаете его с @<script>
, то это подавит вывод;но он все равно будет пытаться записать те же данные, если вы буферизируете.
Если вы видите ORU-10027: buffer overflow
, то вы все равно пытаетесь решить не ту проблему;даже при спулинге вы столкнетесь с той же ошибкой - она появится в файле, а не в окне вывода скрипта.
Буфер относится к самому dbms_output
:
set serveroutput on size 2000
begin
dbms_output.put_line(dbms_random.string('a', 2001));
end;
/
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: at "SYS.DBMS_OUTPUT", line 32
...
Чтобы избежать этой ошибки, установите буфер достаточно высоким для ожидаемого объема вывода или на максимум для версии Oracle и клиента:
set serveroutput on size unlimited
, но, как вы видели, это все равно ограничивает 1000000 байт.в SQL Developer, до версии 18.2 в любом случае.
Даже при отключенном терминале и буферизации в файл вы все равно получите в файле
ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes
.
Если вам нужно больше выходных данных, то вы можете записать выходные данные во временную таблицу и затем запросить ее после вашего блока PL / SQL, возможно.Или вы можете использовать utl_file
для записи в файл (который должен быть на сервере, а не на клиенте, что является недостатком) вместо буферизации.Или вы можете использовать SQL * Plus, который не налагает это ограничение.