Oracle
 sql >> Base de données >  >> RDS >> Oracle

Enregistrez la sortie DBMS_OUTPUT.Put_Line dans la table dans Oracle avec DBMS_OUTPUT.Get_Lines

Dbms_Output.Put_Line est un bon moyen de déboguer facilement le code PLSQL en obtenant l'impression des valeurs requises pour suivre où les choses vont mal. Mais si vous souhaitez enregistrer ces données d'impression dans une table pour les analyser à tout moment, vous pouvez le faire avec la procédure Dbms_Output.Get_Lines.

L'exemple est donné ci-dessous pour consigner les valeurs d'impression Dbms_Output.Put_Line dans une table dans Oracle. Vous trouverez ci-dessous la structure de la table utilisée dans cet exemple nommé "outputlog" ou vous pouvez créer la vôtre selon vos besoins.

CREATE TABLE OUTPUTLOG( CHAR_COL VARCHAR2(1000 BYTE), PROCNAME VARCHAR2(100 BYTE), LOG_DATE DATE);Et ce qui suit est l'exemple de bloc anonyme PLSQL pour enregistrer la sortie :DECLARE n NUMBER :=100; vcol DBMS_OUTPUT.chararr;BEGIN DBMS_OUTPUT.enable (100000); --- faites quelque chose ici DBMS_OUTPUT.put_line ('première ligne'); --- faites quelque chose ici DBMS_OUTPUT.put_line ('deuxième ligne'); --- faites quelque chose ici DBMS_OUTPUT.put_line ('troisième ligne'); --- obtenir la sortie dans le tableau 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); FIN DE BOUCLE ; COMMIT;END;Notez que j'attribue la valeur de 100 à la variable n et que le nombre de lignes de sortie n'est que de 3, donc il ne bouclera et n'enregistrera que 3 fois car il n'a que 3 lignes en sortie, mais si le tampon de sortie a des lignes plus de 100 qu'il n'enregistrera que 100 lignes, ajustez donc cette valeur de variable en conséquence.