Oracle nos suministra un paquete público con el cual podemos enviar mensajes desde subprogramas almacenados, paquetes y disparadores, colocarlos en un buffer y leerlos desde otros subprogramas almacenados, paquetes o disparadores.
SQL*Plus permite visualizar los mensajes que hay en el buffer, por medio del comando SET SERVEROUTPUT ON. La utilización fundamental de este paquete es para la depuración de nuestros subprogramas.
Veamos uno a uno los subprogramas que nos suministra este paquete:
- Habilita las llamadas a los demás subprogramas. No es necesario cuando está activada la opción
SERVEROUTPUT. Podemos pasarle un parámetro indicando el tamaño del buffer.ENABLE ENABLE( buffer_size IN INTEGER DEFAULT 2000); - Deshabilita las llamadas a los demás subprogramas y purga el buffer. Como con
ENABLEno es necesario si estamos usando la opciónSERVEROUTPUT.DISABLE DISABLE(); - Coloca elementos en el buffer, los cuales son convertidos a
VARCHAR2.PUT PUT(item IN NUMBER); PUT(item IN VARCHAR2); PUT(item IN DATE); - Coloca elementos en el buffer y los termina con un salto de línea.
PUT_LINE PUT_LINE(item IN NUMBER); PUT_LINE(item IN VARCHAR2); PUT_LINE(item IN DATE); - Coloca un salto de línea en el buffer. Utilizado cuando componemos una línea usando varios
PUT.NEW_LINE NEW_LINE(); - Lee una línea del buffer colocándola en el parámetro
liney obviando el salto de línea. El parámetrostatusdevolverá 0 si nos hemos traído alguna línea y 1 en caso contrario.GET_LINE GET_LINE(line OUT VARCHAR2, status OUT VARCHAR2); - Intenta leer el número de líneas indicado en
numlines. Una vez ejecutado,numlinescontendrá el número de líneas que se ha traído. Las líneas traídas las coloca en el parámetrolinesdel tipoCHARARR, tipo definido el paqueteDBMS_OUTPUTcomo una tabla deVARCHAR2(255).GET_LINES GET_LINES(lines OUT CHARARR, numlines IN OUT INTEGER);