====Eine PL/SQL Routine wirft den Fehler ORU-10027 - DBMS_OUTPUT Buffer zu klein =====
Eine PL/SQL Routine funktioniert einwandfrei in SQL*Plus und wirft plötzlich in der Entwicklungsumgebung einen Fehler "**ORU-10027: buffer overflow, limit 10000 Byte**".
Eine erste Analyse des eigentlichen Programmcodes ergibt keinen Fehler.
Fehlerstack:
ERROR at line 1:
ORA-20100: An error occured. ORA-20000
ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: in "GPI.EM$TOOLS", Zeile 106
Der Fehler liegt aber gar nicht in der PLSQL Routine, sondern in der Verwendung von DBMS_OUTPUT!
Der Buffer für DBMS_OUTPUT war in der Entwicklungsumgebung einfach per Default zu klein eingestellt.
===Test in SQL*Plus:===
Setzen des Buffers für DBMS_OUTPUT auf den kleinsten möglichen Wert:
set serveroutput on size 2000
begin
for i in 1..20
loop
dbms_output.put_line(rpad('Test run ',100,'X')||':'||i);
end loop;
end;
/
.....
Test run XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
.....
ERROR at line 1:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: in "SYS.DBMS_OUTPUT", Zeile 32
ORA-06512: in "SYS.DBMS_OUTPUT", Zeile 97
ORA-06512: in "SYS.DBMS_OUTPUT", Zeile 112
ORA-06512: in Zeile 4
...
===Abhilfe:===
* Setzen der Buffersize in der eigentlichen PL/SQL Routine mit ** DBMS_OUTPUT.ENABLE(1000000) **
* Setzen der Buffersize mit **set serveroutput on size 1000000**" in SQL*Plus