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

Existe-t-il un moyen de vider la sortie de PL/SQL dans Oracle ?

Pas vraiment. Le fonctionnement de DBMS_OUTPUT est le suivant :votre bloc PL/SQL s'exécute sur le serveur de base de données sans interaction avec le client. Ainsi, lorsque vous appelez PUT_LINE, il s'agit simplement de mettre ce texte dans un tampon en mémoire sur le serveur. Lorsque votre bloc PL/SQL est terminé, le contrôle est rendu au client (je suppose SQLPlus dans ce cas) ; à ce stade, le client extrait le texte du tampon en appelant GET_LINE et l'affiche.

Ainsi, la seule façon de faire apparaître la sortie plus fréquemment dans le fichier journal est de diviser un grand bloc PL/SQL en plusieurs blocs plus petits, afin que le contrôle soit rendu plus souvent au client. Cela peut ne pas être pratique selon ce que fait votre code.

D'autres alternatives consistent à utiliser UTL_FILE pour écrire dans un fichier texte, qui peut être vidé quand vous le souhaitez, ou à utiliser une procédure de transaction autonome pour insérer des instructions de débogage dans une table de base de données et valider après chacune.