sql >> Base de Datos >  >> RDS >> Oracle

¿Hay alguna forma de vaciar la salida de PL/SQL en Oracle?

Realmente no. La forma en que funciona DBMS_OUTPUT es la siguiente:su bloque PL/SQL se ejecuta en el servidor de la base de datos sin interacción con el cliente. Entonces, cuando llama a PUT_LINE, simplemente está colocando ese texto en un búfer en la memoria del servidor. Cuando se completa su bloque PL/SQL, el control se devuelve al cliente (supongo que SQLPlus en este caso); en ese momento, el cliente obtiene el texto del búfer llamando a GET_LINE y lo muestra.

Por lo tanto, la única forma en que puede hacer que la salida aparezca en el archivo de registro con más frecuencia es dividir un bloque PL/SQL grande en varios bloques más pequeños, de modo que el control vuelva al cliente con mayor frecuencia. Esto puede no ser práctico dependiendo de lo que esté haciendo su código.

Otras alternativas son usar UTL_FILE para escribir en un archivo de texto, que se puede vaciar cuando lo desee, o usar un procedimiento de transacción autónoma para insertar declaraciones de depuración en una tabla de base de datos y confirmar después de cada una.