在SQL Developer中打印一个variables的值

我想打印一个匿名块内的特定variables的值。 我正在使用Oracle SQL Developer。 我试过使用dbms_output.put_line 。 但它不工作。 我正在使用的代码如下所示。

 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; 

而且我只能以anonymous block completed获得输出。

您需要打开dbms_output。 在Oracle SQL Developer中:

  1. 显示DBMS输出窗口(查看 – > DBMS输出)。
  2. 按下Dbms Output窗口顶部的“+”button,然后在打开的对话框中select一个打开的数据库连接。

在SQL * Plus中:

  SET SERVEROUTPUT ON 

SQL Developer似乎只在显式打开DBMS_OUTPUT窗格时输出DBMS_OUTPUT文本。

转到(菜单)VIEW – > Dbms_output来调用窗格。

点击绿色加号标志为你的连接启用输出,然后运行代码。

编辑:不要忘记根据您所期望的输出量设置缓冲区大小。

使服务器输出首先

  1. 然后SET SERVEROUTPUT

  2. 进入DBMS Output窗口(View-> DBMS Output)

  3. 然后按Crtl + n连接服务器

我认为它的帮助。

还有另外一个select:

 set serveroutput on format wraped; 

要么

打开“视图”菜单并点击“dbms输出”。 你应该在工作表底部得到一个dbms输出窗口。 然后你需要添加连接(出于某种原因,这不是自动完成的)。

在菜单中select查看 – >数据库输出

进入DBMS Output窗口(View-> DBMS Output)。

 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; 

我添加了第二个游标closures。 它的工作,并获得输出以及…