SQL Developer에서 변수 값 인쇄


102

익명 블록 안에있는 특정 변수의 값을 인쇄하고 싶었습니다. 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.


출력은 프로그램의 끝 / 종료시 플러시됩니다. 달리는 동안 표시하기 위해 플러시 할 수 없습니다. 로그 테이블에 봐 (자율 거래) 무슨 일이 프로그램이 실행되는 동안 일어나는 볼
tbone

내장 디버거를 사용하고 블록을 단계별로 실행하는 것은 어떻습니까? 모든 변수의 상태를 보여줍니다.
Wolf

5
SERVEROUTPUT을 ON으로 설정하십시오. --add 세미 콜론, ALL을 선택하고 나를 위해, 개발자에 그 작업 벌금을 실행
Praveenkumar_V

답변:


203

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

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

SQL * Plus에서 :

 SET SERVEROUTPUT ON

버전 1.5.5에서는보기에 해당 옵션이없는 것 같습니다. 연결, 파일, 보고서 ... 상태 표시 줄, 도구 모음, 새로 고침이 있지만 DBMS 출력은 없습니다. 환경 설정에 많은 항목이 있지만 여전히 출력 옵션이 표시되지 않습니다.
ruffin

1
@ruffin : v1.5.5는 3 년이되었습니다. 나는 v3.0을 사용하고 있으며 현재 버전은 v3.1 인 것 같습니다.
Klas Lindbäck

/ nods 우리는 1.5.5에 고정되어 있습니다. 답이 있으면 대답하겠습니다. 그렇지 않으면 nps입니다. 감사!
ruffin

SQL 파일 첫 번째 줄에 "SET SERVEROUTPUT ON"옵션을 설정했습니다.
Samih A 2014 년

정말 고맙습니다!
Amazigh.Ca

18

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

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

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

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


6

우선 서버 출력 만들기

  1. SET SERVEROUTPUT on 그때

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

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


3

두 가지 옵션이 있습니다.

set serveroutput on format wrapped;

또는

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


1

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

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


0
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;

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



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.