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

C'è un modo per svuotare l'output da PL/SQL in Oracle?

Non proprio. Il modo in cui funziona DBMS_OUTPUT è questo:il blocco PL/SQL viene eseguito sul server del database senza alcuna interazione con il client. Quindi, quando chiami PUT_LINE, sta semplicemente mettendo quel testo in un buffer in memoria sul server. Quando il blocco PL/SQL viene completato, il controllo viene restituito al client (presumo SQLPlus in questo caso); a quel punto il client preleva il testo dal buffer chiamando GET_LINE e lo visualizza.

Pertanto, l'unico modo per far apparire l'output nel file di registro più frequentemente è suddividere un blocco PL/SQL di grandi dimensioni in più blocchi più piccoli, in modo che il controllo venga restituito al client più spesso. Questo potrebbe non essere pratico a seconda di ciò che sta facendo il tuo codice.

Altre alternative sono usare UTL_FILE per scrivere su un file di testo, che può essere scaricato quando vuoi, o usare una procedura di transazione autonoma per inserire istruzioni di debug in una tabella del database e fare il commit dopo ciascuna di esse.