익명 블록 안에있는 특정 변수의 값을 인쇄하고 싶었습니다. 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 창의 맨 위에있는 “+”단추를 누른 다음 열리는 대화 상자에서 열린 데이터베이스 연결을 선택하십시오.
SQL * Plus에서 :
SET SERVEROUTPUT ON
답변
SQL Developer는 DBMS_OUTPUT 창 창을 명시 적으로 켰을 때만 DBMS_OUTPUT 텍스트를 출력하는 것 같습니다.
(메뉴)보기-> Dbms_output으로 이동하여 창을 호출합니다.
녹색 더하기 기호를 클릭하여 연결에 대한 출력을 활성화 한 다음 코드를 실행하십시오.
편집 : 예상되는 출력량에 따라 버퍼 크기를 설정하는 것을 잊지 마십시오.
답변
우선 서버 출력 만들기
-
SET SERVEROUTPUT on
그때 -
DBMS 출력 창으로 이동합니다 (보기-> DBMS 출력).
-
그런 다음 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 출력을 선택하고