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

Gibt es eine Möglichkeit, die Ausgabe von PL/SQL in Oracle zu leeren?

Nicht wirklich. So funktioniert DBMS_OUTPUT:Ihr PL/SQL-Block wird auf dem Datenbankserver ohne Interaktion mit dem Client ausgeführt. Wenn Sie also PUT_LINE aufrufen, wird dieser Text einfach in einen Puffer im Speicher des Servers gestellt. Wenn Ihr PL/SQL-Block abgeschlossen ist, wird die Kontrolle an den Client zurückgegeben (ich gehe in diesem Fall von SQLPlus aus); An diesem Punkt holt der Client den Text aus dem Puffer, indem er GET_LINE aufruft, und zeigt ihn an.

Die einzige Möglichkeit, die Ausgabe häufiger in der Protokolldatei erscheinen zu lassen, besteht also darin, einen großen PL/SQL-Block in mehrere kleinere Blöcke aufzuteilen, sodass die Kontrolle häufiger an den Client zurückgegeben wird. Dies ist möglicherweise nicht praktikabel, je nachdem, was Ihr Code tut.

Andere Alternativen sind die Verwendung von UTL_FILE zum Schreiben in eine Textdatei, die jederzeit geleert werden kann, oder die Verwendung einer autonomen Transaktionsprozedur, um Debug-Anweisungen in eine Datenbanktabelle einzufügen und nach jeder zu bestätigen.