Imprimir con PL/SQL: dbms_output.put_line
Introducción
Hoy vamos a ver la manera de imprimir por pantalla en PL/SQL. Lo haremos mediante put_line del paquete dbms_output. Éste es un método muy utilizado, sobretodo para realizar operaciones de depuración. Estudiaremos dos ejemplos muy sencillos.
El código
Concatenar una cadena de caracteres y un número, y mostrarlo:
Los string van entre comillas simples y se concatenan mediante ||. La función to_char convierte un número en cadena de caracteres.
SQL>
SQL> set serveroutput on
SQL> declare
2 myNumber number := 1;
3 begin
4 myNumber := 1 + 1;
5 dbms_output.put_line( '1 + 1 = ' || to_char( myNumber ) || '!' );
6 exception
7 when others then
8 dbms_output.put_line( 'We encountered an exception!' );
9 end;
10 /
1 + 1 = 2!
PL/SQL procedure successfully completed.
SQL>
SQL>
Mostrar valor de una variable:
Se muestra los distintos valores de una variable en las distintas iteracciones del bucle. Como hemos dicho antes, puede ser útil a la hora de depurar nuestros procedimientos:
SQL>
SQL> --Basic loop
SQL>
SQL>
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 x NUMBER := 1;
3 BEGIN
4 LOOP
5 DBMS_OUTPUT.PUT_LINE('This loop has executed'||TO_CHAR(x)||' time(s)');
6 x := x +1;
7 EXIT WHEN x > 5;
8 END LOOP;
9 END;
10
11
12 /
This loop has executed1 time(s)
This loop has executed2 time(s)
This loop has executed3 time(s)
This loop has executed4 time(s)
This loop has executed5 time(s)
PL/SQL procedure successfully completed.
Fuentes
http://www.java2s.com/Code/Oracle/PL-SQL/DBMS_OUTPUT.htm
Tweet
3 Comentarios:
Hi!
Siempre se tiene que colocar SET SERVEROUTPUT ON antes de cada bloque?
Hola
La salida puede estar limitada a un número bytes por defecto y quizás sea necesario poner "SET SERVEROUTPUT ON" en cada bloque. No obstante, en la versión 10gR2 ya se puede utilizar "SET SERVEROUTPUT ON SIZE UNLIMITED" para que soporte un tamaño ilimitado y así evitar errores del tipo buffer overflow.
Saludos.
esto puede afectar la memoria del servidor si el dbms_output esta en un loop.
Publicar un comentario