Oracle
 sql >> Database >  >> RDS >> Oracle

Registra l'output di DBMS_OUTPUT.Put_Line in una tabella in Oracle con DBMS_OUTPUT.Get_Lines

Dbms_Output.Put_Line è un buon modo per eseguire facilmente il debug del codice PLSQL ottenendo la stampa dei valori richiesti per tenere traccia di dove le cose stanno andando storte. Ma se vuoi registrare i dati di stampa in una tabella per analizzarli in qualsiasi momento, puoi farlo con la procedura Dbms_Output.Get_Lines.

L'esempio è riportato di seguito per registrare i valori di stampa Dbms_Output.Put_Line in una tabella in Oracle. Di seguito è riportata la struttura della tabella utilizzata in questo esempio denominata "outputlog" oppure puoi crearne una tua secondo le tue esigenze.

CREATE TABLE OUTPUTLOG( CHAR_COL VARCHAR2(1000 BYTE), PROCNAME VARCHAR2(100 BYTE), LOG_DATE DATE);E il seguente è l'esempio di blocco anonimo PLSQL per registrare l'output:DECLARE n NUMBER :=100; vcol DBMS_OUTPUT.chararr;BEGIN DBMS_OUTPUT.enable (100000); --- fai qualcosa qui DBMS_OUTPUT.put_line ("prima riga"); --- fai qualcosa qui DBMS_OUTPUT.put_line ("seconda riga"); --- fai qualcosa qui DBMS_OUTPUT.put_line ("terza riga"); --- ottieni l'output nell'array vcol 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); FINE CORSA; COMMIT;END;Nota che assegno il valore da 100 a n variabile e il numero di righe di output è solo 3, quindi verrà eseguito in loop e registrerà solo 3 volte perché ha solo 3 righe in output, ma se il buffer di output ha righe più di 100 di quanto registrerà solo 100 righe, quindi regola di conseguenza questo valore di variabile.