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: