Печать значения переменной в SQL Developer - PullRequest
96 голосов
/ 25 октября 2011

Я хотел напечатать значение определенной переменной, которая находится внутри анонимного блока. Я использую 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.

Ответы [ 8 ]

188 голосов
/ 25 октября 2011

Вам нужно включить dbms_output. В Oracle SQL Developer:

  1. Показать окно вывода СУБД (Вид-> Вывод СУБД).
  2. Нажмите кнопку «+» в верхней части окна «Вывод базы данных», а затем выберите открытое соединение с базой данных в открывшемся диалоговом окне.

В SQL * Plus:

 SET SERVEROUTPUT ON
17 голосов
/ 25 октября 2011

Похоже, что SQL Developer выводит текст DBMS_OUTPUT только тогда, когда вы явно включили оконную панель DBMS_OUTPUT.

Перейдите в (Меню) VIEW -> Dbms_output, чтобы вызвать панель.

Нажмите на зеленый знак плюс, чтобы включить вывод для вашего соединения, а затем запустите код.

РЕДАКТИРОВАТЬ: не забудьте установить размер буфера в соответствии с объемом вывода, который вы ожидаете.

5 голосов
/ 18 июня 2013

Сначала вывести сервер на

  1. SET SERVEROUTPUT on, затем

  2. Перейти к окну вывода СУБД (Вид-> Вывод СУБД)

  3. затем нажмите Ctrl + N для подключения к серверу

3 голосов
/ 15 мая 2013

Существует 2 варианта:

set serveroutput on format wrapped;

или

Откройте меню «Вид» и нажмите «Вывод в DBMS».Вы должны получить окно вывода dbms в нижней части листа.Затем вам нужно добавить соединение (по какой-то причине это не делается автоматически).

0 голосов
/ 20 июня 2019

1) Перейдите в меню просмотра.
2) Выберите пункт меню DBMS_OUTPUT.
3) Нажмите Ctrl + N и выберите редактор подключения.
4) Выполните команду SET SERVEROUTPUT ON.
5) Затем выполните сценарий PL / SQL.

enter image description here enter image description here

0 голосов
/ 09 января 2014
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;

Я добавил Close второго курсора. Это работает и получает вывод также ...

0 голосов
/ 07 февраля 2013

Перейти к окну вывода СУБД (Вид-> Вывод СУБД).

0 голосов
/ 07 февраля 2013

выберите Вид -> Вывод СУБД в меню и

...