Imprimir el valor de una variable en SQL Developer

Quería imprimir el valor de una variable particular que está dentro de un bloque anónimo. Estoy usando Oracle SQL Developer. Intenté usar dbms_output.put_line . Pero no está funcionando. El código que estoy usando se muestra a continuación.

 SET SERVEROUTPUT ON DECLARE CTABLE USER_OBJECTS.OBJECT_NAME%TYPE; CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE; V_ALL_COLS VARCHAR2(500); CURSOR CURSOR_TABLE IS SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OBJECT_NAME LIKE 'tb_prm_%'; CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2) IS SELECT COLUMN_NAME FROM ALL_TAB_COLS WHERE TABLE_NAME = V_TABLE_NAME; BEGIN OPEN CURSOR_TABLE; LOOP FETCH CURSOR_TABLE INTO CTABLE; EXIT WHEN CURSOR_TABLE%NOTFOUND; OPEN CURSOR_COLUMNS (CTABLE); V_ALL_COLS := NULL; LOOP FETCH CURSOR_COLUMNS INTO CCOLUMN; V_ALL_COLS := V_ALL_COLS || CCOLUMN; IF CURSOR_COLUMNS%FOUND THEN V_ALL_COLS := V_ALL_COLS || ', '; ELSE EXIT; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE(V_ALL_COLS); END LOOP; CLOSE CURSOR_TABLE; END; 

Y obtengo la salida solo como anonymous block completed .

Debes activar dbms_output. En Oracle SQL Developer:

  1. Mostrar la ventana Salida DBMS (Ver-> Salida DBMS).
  2. Presione el botón “+” en la parte superior de la ventana de Salida de Dbms y luego seleccione una conexión de base de datos abierta en el diálogo que se abre.

En SQL * Plus:

  SET SERVEROUTPUT ON 

SQL Developer parece que solo muestra el texto DBMS_OUTPUT cuando ha activado explícitamente el panel de la ventana DBMS_OUTPUT.

Vaya a (Menú) VER -> Dbms_output para invocar el panel.

Haga clic en el signo más verde para habilitar la salida de su conexión y luego ejecute el código.

EDITAR: no olvide configurar el tamaño del búfer de acuerdo con la cantidad de salida que está esperando.

Hacer que la salida del servidor sea Primero que nada

  1. SET SERVEROUTPUT on ese momento

  2. Ir a la ventana Salida DBMS (Ver-> Salida DBMS)

  3. luego presione Ctrl + N para conectar el servidor

Hay otra opción:

 set serveroutput on format wraped; 

o

Abra el menú ‘ver’ y haga clic en ‘salida dbms’. Debería obtener una ventana de salida dbms en la parte inferior de la hoja de trabajo. Luego necesita agregar la conexión (por alguna razón esto no se hace automáticamente).

seleccione Ver -> Salida DBMS en el menú y

Vaya a la ventana Salida DBMS (Ver-> Salida DBMS).

 DECLARE CTABLE USER_OBJECTS.OBJECT_NAME%TYPE; CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE; V_ALL_COLS VARCHAR2(5000); CURSOR CURSOR_TABLE IS SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OBJECT_NAME LIKE 'STG%'; CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2) IS SELECT COLUMN_NAME FROM ALL_TAB_COLS WHERE TABLE_NAME = V_TABLE_NAME; BEGIN OPEN CURSOR_TABLE; LOOP FETCH CURSOR_TABLE INTO CTABLE; OPEN CURSOR_COLUMNS (CTABLE); V_ALL_COLS := NULL; LOOP FETCH CURSOR_COLUMNS INTO CCOLUMN; V_ALL_COLS := V_ALL_COLS || CCOLUMN; IF CURSOR_COLUMNS%FOUND THEN V_ALL_COLS := V_ALL_COLS || ', '; ELSE EXIT; END IF; END LOOP; close CURSOR_COLUMNS ; DBMS_OUTPUT.PUT_LINE(V_ALL_COLS); EXIT WHEN CURSOR_TABLE%NOTFOUND; END LOOP;`enter code here` CLOSE CURSOR_TABLE; END; 

He agregado el Cierre del segundo cursor. Está trabajando y obteniendo resultados también …