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
ENABLE
no 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
line
y obviando el salto de línea. El parámetrostatus
devolverá 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,numlines
contendrá el número de líneas que se ha traído. Las líneas traídas las coloca en el parámetrolines
del tipoCHARARR
, tipo definido el paqueteDBMS_OUTPUT
como una tabla deVARCHAR2(255)
.GET_LINES GET_LINES(lines OUT CHARARR, numlines IN OUT INTEGER);