Oracle Spool - отсутствует полная информация
Я пытаюсь Spool
Информация из моей таблицы метаданных. Но текстовый файл заканчивается на второй строке. Он не отображает полные метаданные
SPOOL P_TABLES.txt
set linesize 10000
set trimspool on
set heading on
SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_X') FROM DUAL;
SPOOL OFF;
Он экспортирует текстовый файл, но не предоставляет полную информацию.
> SELECT DBMS_METADATA.GET_DDL('TABLE','TESI_STAMPDUTYLABELSVALUE') FROM DUAL
CREATE TABLE "ESIXUSER"."TESI_STAMPDUTYLABELSVALUE"
( "SVUNIDOCREFID" VAR...
//Nothing after this in .txt file.
Где, как в Oracle SQL Developer, я могу проверить полную DLL.
Могу ли я изменить размер строки в файле sql?
3 ответа
Я не уверен, что именно это будет работать или нет, но
Нажмите здесь ( http://www.dba-oracle.com/t_1_dbms_metadata.htm "это может помочь вам")
Я думаю, что вам не хватает этих:
установить заголовок выключить установить эхо выключить установить страницы 999 установить длинные 90000
GET_DDL
возвращает CLOB
и это может быть трудно напрямую напечатать. Если вам нужно распечатать свой результат, вам может понадобиться что-то, что сканирует ваш CLOB
печать строк:
declare
vClob clob;
PROCEDURE print_clob (
pClob IN OUT NOCOPY CLOB
)
IS
kLineTerminator VARCHAR2(1) := CHR(10);
vlgh_file NUMBER := 0;
vLineEndPos INTEGER;
vROW VARCHAR2(32767);
vOffset NUMBER := 1;
BEGIN
vlgh_file := DBMS_LOB.GETLENGTH(pClob);
--
while (vOffset < vlgh_file) LOOP
vLineEndPos := DBMS_LOB.INSTR(pClob, kLineTerminator, vOffset);
if (vLineEndPos = 0) then
vLineEndPos := vlgh_file +1 ;
end if;
vROW := RTRIM(NVL(DBMS_LOB.SUBSTR(pClob, vLineEndPos - vOffset, vOffset),'--'));
vOffset := vLineEndPos;
DBMS_OUTPUT.PUT_LINE(vROW);
vOffset := vOffset + 1;
END LOOP;
END print_clob;
begin
select DBMS_METADATA.GET_DDL('TABLE','TEST_DDL') into vClob from dual;
--
print_clob(vClob);
end;
/
SET LONG 1000000000
SET LINESIZE 10000
SPOOL ABC.TXT
SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_X') FROM DUAL;
SPOOL OFF;