[oracle] 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.



답변

dbms_output을 켜야합니다. Oracle SQL Developer에서 :

  1. DBMS 출력 창을 표시합니다 (보기-> DBMS 출력).
  2. Dbms Output 창의 맨 위에있는 “+”단추를 누른 다음 열리는 대화 상자에서 열린 데이터베이스 연결을 선택하십시오.

SQL * Plus에서 :

 SET SERVEROUTPUT ON


답변

SQL Developer는 DBMS_OUTPUT 창 창을 명시 적으로 켰을 때만 DBMS_OUTPUT 텍스트를 출력하는 것 같습니다.

(메뉴)보기-> Dbms_output으로 이동하여 창을 호출합니다.

녹색 더하기 기호를 클릭하여 연결에 대한 출력을 활성화 한 다음 코드를 실행하십시오.

편집 : 예상되는 출력량에 따라 버퍼 크기를 설정하는 것을 잊지 마십시오.


답변

우선 서버 출력 만들기

  1. SET SERVEROUTPUT on 그때

  2. DBMS 출력 창으로 이동합니다 (보기-> DBMS 출력).

  3. 그런 다음 Ctrl+ N를 눌러 서버 연결


답변

두 가지 옵션이 있습니다.

set serveroutput on format wrapped;

또는

‘보기’메뉴를 열고 ‘dbms 출력’을 클릭하십시오. 워크 시트 맨 아래에 dbms 출력 창이 표시됩니다. 그런 다음 연결을 추가해야합니다 (어떤 이유로 자동으로 수행되지 않음).


답변

1)보기 메뉴로 이동합니다.
2) DBMS_OUTPUT 메뉴 항목을 선택합니다.
3) Ctrl+ N를 누르고 연결 편집기를 선택합니다.
4) SET SERVEROUTPUT ON 명령을 실행합니다.
5) 그런 다음 PL / SQL 스크립트를 실행하십시오.

여기에 이미지 설명 입력
여기에 이미지 설명 입력


답변

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;

두 번째 커서의 닫기를 추가했습니다. 작동하고 출력도 얻습니다 …


답변

메뉴에서보기-> DBMS 출력을 선택하고