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.
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 ...