Oracle
 sql >> Datenbank >  >> RDS >> Oracle

DBMS_OUTPUT.Put_Line-Ausgabe in Oracle-Tabelle mit DBMS_OUTPUT.Get_Lines protokollieren

Dbms_Output.Put_Line ist eine gute Möglichkeit Debuggen Sie PLSQL-Code einfach, indem Sie die erforderlichen Werte drucken lassen, um zu verfolgen, wo die Dinge schief gehen. Wenn Sie diese Druckdaten jedoch in einer Tabelle protokollieren möchten, um sie jederzeit zu analysieren, können Sie dies mit der Prozedur Dbms_Output.Get_Lines tun.

Das folgende Beispiel zeigt die Druckwerte von Dbms_Output.Put_Line in einer Tabelle in Oracle. Unten ist die Struktur der Tabelle, die in diesem Beispiel verwendet wird, mit dem Namen "outputlog", oder Sie können Ihre eigene nach Ihren Anforderungen erstellen.

CREATE TABLE OUTPUTLOG( CHAR_COL VARCHAR2(1000 BYTE), PROCNAME VARCHAR2(100 BYTE), LOG_DATE DATE); Und das Folgende ist das anonyme PLSQL-Blockbeispiel zum Protokollieren der Ausgabe:DECLARE n NUMBER :=100; vcol DBMS_OUTPUT.chararr;BEGIN DBMS_OUTPUT.enable (100000); --- hier etwas tun DBMS_OUTPUT.put_line ('erste Zeile'); --- hier etwas tun DBMS_OUTPUT.put_line ('zweite Zeile'); --- hier etwas tun DBMS_OUTPUT.put_line ('dritte Zeile'); --- Holen Sie sich die Ausgabe in das vcol-Array DBMS_OUTPUT.get_lines (vcol, n); FOR i IN 1 .. n LOOP INSERT INTO outputlog (char_col, procname, log_date) VALUES (vcol (i), 'anonymous', SYSDATE); SCHLEIFE ENDE; COMMIT;END;Beachten Sie, dass ich den Wert von 100 der n-Variablen zuweise und die Anzahl der Ausgabezeilen nur 3 beträgt, sodass nur dreimal eine Schleife ausgeführt und aufgezeichnet wird, da nur 3 Zeilen in der Ausgabe vorhanden sind, der Ausgabepuffer jedoch Zeilen enthält Bei mehr als 100 werden nur 100 Zeilen protokolliert, also passen Sie diesen Variablenwert entsprechend an.