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

Log DBMS_OUTPUT.Put_Line-output i tabel i Oracle med DBMS_OUTPUT.Get_Lines

Dbms_Output.Put_Line er en god måde at debug PLSQL-kode nemt ved at få print de nødvendige værdier for at spore, hvor tingene går galt. Men hvis du vil logge disse udskriftsdata ind i en tabel for at analysere dem til enhver tid, kan du gøre dette med Dbms_Output.Get_Lines procedure.

Eksemplet er givet nedenfor for at logge Dbms_Output.Put_Line printværdier i en tabel i Oracle. Nedenfor er strukturen af ​​tabellen, som bruges i dette eksempel kaldet "outputlog", eller du kan oprette din egen efter dit behov.

CREATE TABLE OUTPUTLOG( CHAR_COL VARCHAR2(1000 BYTE), PROCNAME VARCHAR2(100 BYTE), LOG_DATE DATE);Og følgende er PLSQL anonyme blokeksemplet for at logge output:DECLARE n NUMBER :=100; vcol DBMS_OUTPUT.chararr;BEGIN DBMS_OUTPUT.enable (100000); --- gør noget her DBMS_OUTPUT.put_line ('første linje'); --- gør noget her DBMS_OUTPUT.put_line ('anden linje'); --- gør noget her DBMS_OUTPUT.put_line ('tredje linje'); --- få output i 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), 'anonym', SYSDATE); ENDSLØKKE; COMMIT;END;Bemærk, at jeg anslår værdien af ​​100 til n variabel, og antallet af outputlinjer er kun 3, så det vil sløjfe og optage kun 3 gange, fordi det kun har 3 rækker i output, men hvis outputbufferen har rækker mere end 100 end det vil kun logge 100 rækker, så juster denne variabelværdi i overensstemmelse hermed.
  1. Databasetip til begyndere

  2. Kan ikke bruge et CONTAINS eller FREETEXT prædikat på tabel eller indekseret visning, fordi det ikke er fuldtekstindekseret

  3. Hvordan NVL() virker i MariaDB

  4. Oracle eksekveringsplaner ved brug af LIKE-operatoren med en DETERMINISTISK funktion