web-dev-qa-db-ja.com

SQL Developerでの変数の値の出力

無名ブロック内の特定の変数の値を出力したかった。 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としてのみ出力を取得しています。

96
988875

Dbms_outputをオンにする必要があります。 Oracle SQL Developerの場合:

  1. [DBMS出力]ウィンドウを表示します([表示]、[DBMS出力])。
  2. [DBMS出力]ウィンドウの上部にある[+]ボタンを押し、開いたダイアログで開いているデータベース接続を選択します。

SQL * Plusの場合:

 SET SERVEROUTPUT ON
187
Klas Lindbäck

SQL Developerは、DBMS_OUTPUTウィンドウを明示的にオンにした場合にのみDBMS_OUTPUTテキストを出力するようです。

(メニュー)VIEW-> Dbms_outputに進み、ペインを呼び出します。

緑色のプラス記号をクリックして接続の出力を有効にし、コードを実行します。

編集:あなたが期待している出力の量に応じてバッファサイズを設定することを忘れないでください。

17
Ollie

最初にサーバー出力を作成する

  1. SET SERVEROUTPUT on then

  2. [DBMS出力]ウィンドウに移動します([表示]-> [DBMS出力])

  3. を押す Ctrl+N 接続サーバー用

5
user2497268

2つのオプションがあります。

set serveroutput on format wrapped;

または

「表示」メニューを開き、「dbms output」をクリックします。ワークシートの下部にdbms出力ウィンドウが表示されます。次に、接続を追加する必要があります(何らかの理由でこれは自動的に行われません)。

3
devosJava
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;

2番目のカーソルのクローズを追加しました。それも動作し、出力を取得しています...

0
user3098484

1)表示メニューに移動します。
2)DBMS_OUTPUTメニュー項目を選択します。
3)を押します Ctrl + N 接続エディターを選択します。
4)SET SERVEROUTPUT ONコマンドを実行します。
5)次に、PL/SQLスクリプトを実行します。

enter image description hereenter image description here

0
Lova Chittumuri