在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中:
- 显示DBMS输出窗口(查看 – > DBMS输出)。
- 按下Dbms Output窗口顶部的“+”button,然后在打开的对话框中select一个打开的数据库连接。
在SQL * Plus中:
SET SERVEROUTPUT ON
SQL Developer似乎只在显式打开DBMS_OUTPUT窗格时输出DBMS_OUTPUT文本。
转到(菜单)VIEW – > Dbms_output来调用窗格。
点击绿色加号标志为你的连接启用输出,然后运行代码。
编辑:不要忘记根据您所期望的输出量设置缓冲区大小。
使服务器输出首先
-
然后SET SERVEROUTPUT
-
进入DBMS Output窗口(View-> DBMS Output)
-
然后按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。 它的工作,并获得输出以及…