Wenn die Puffergröße voll ist. Es gibt mehrere Optionen, die Sie ausprobieren können:
1) Erhöhen Sie die Größe des DBMS_OUTPUT Puffer zu 1.000.000
2) Versuchen Sie, die Datenfilterung in den Puffer geschrieben - möglicherweise gibt es eine Schleife, die zu DBMS_OUTPUT schreibt und Sie tun brauche diese Daten nicht.
3) Rufen Sie ENABLE an verschiedenen Kontrollpunkten in Ihrem Code auf. Jeder Anruf löscht den Puffer.
DBMS_OUTPUT.ENABLE (NULL) wird für die Abwärtskompatibilität zu 20.000 Standard Oracle documentation on dbms_output
Sie können auch Ihre eigene Ausgabe erstellen wie display.something unten Schnipsel
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;
Link--Ref: Alternative to dbms_output.putline @ By : Alexander
Wahrscheinlich schreiben Sie viel zu viele Informationen mit dbms_output. Es ist nicht dafür ausgelegt. Ihre beste Option ist wahrscheinlich, diese Nachrichten in eine Tabelle einzufügen und anschließend aus der Tabelle auszuwählen. –
@a_horse_with_no_name: Ich habe nie die Verwendung einer Datenbanktabelle als Anwendungsprotokoll aufgrund möglicherweise nicht protokollierbarer Vorfälle befürwortet, z. t Stellen Sie eine Verbindung zur Datenbank her, in der Sie protokollieren, dass die App keine Verbindung herstellen kann, wenn sich das Protokoll in der Datenbank befindet, mit der Sie keine Verbindung herstellen können? Ich bevorzuge das Schreiben von Protokollen in flache Dateien (mit dem UTL_FILE-Paket in PL/SQL), was IMO weniger wahrscheinlich unbrauchbar als eine Tabelle in einer Datenbank ist. YMMV. Teile und genieße. –
@BobJarvis: in einem PL/SQL-Verfahren denke ich, dass dies vollkommen sinnvoll ist. Für normalen Anwendungscode (Java, C#, ...) stimme ich Ihnen zu. –