Я использую PL / SQL Версия разработчика 11.0.6.1776
Следующий скрипт создает папку с именем 'test' по указанному пути и подпапку внутри нее с именем таблицы который в настоящее время спулирует, чтобы сохранить свои метаданные в этой папке:
set pagesize 0
set long 90000
set linesize 10000
SET TERMOUT OFF
spool out.sql
select 'host mkdir ''C:\Users\personal\test'''||';'||chr(13)||chr(10)|| --Creating the new folder
'host mkdir '||''''||'C:\Users\afpuchn\test\'||REPLACE(table_name, '$', '_')||''''||';'||chr(13)||chr(10)|| --Creating a subfolder
'spool C:\Users\personal\test\'||REPLACE(table_name, '$', '_')||'\'||REPLACE(table_name, '$', '_')||'.txt'||chr(13)||chr(10)||
'SELECT DBMS_METADATA.GET_DDL'||chr(13)||chr(10)||
'(''TABLE'','''||table_name||''',''MTO_TABL'') '||chr(13)||chr(10)||
'FROM DUAL;'||chr(13)||chr(10)|| --Extracting metadata
'spool off' as cmd
FROM MTTO_TAB_EXIST_ALL tea
WHERE tea.MRK_DEL_PERM = 'Y'
AND tea.OWNER_NAME = 'MTO_TABL'
AND ROWNUM < = 5;
spool off
@OUT.SQL
exit
Когда я запускаю скрипт, имя, которое я хочу дать файлу, который хранится в созданной папке, является неполным или с указанным типом файла неполный.
Вот пример возвращаемого сценария:
host mkdir 'C:\Users\personal\test';
host mkdir 'C:\Users\personal\test\ED_EXTR_CSV_PRIM_DEA_PUBLI';
spool C:\Users\afpuchn\test\ED_EXTR_CSV_PRIM_DEA_PUBLI\ED_EXTR_CSV_PRIM_DEA_PU --The file name is incomplete
SELECT DBMS_METADATA.GET_DDL
('TABLE','ED_EXTR_CSV_PRIM_DEA_PUBLI','MTO_TABL')
FROM DUAL;
spool off
Из-за этого сценарий не может быть сохранен по указанному пути, даже если я поставлю SET LINESIZE
, который не не работает. Моя версия PL / SQL имеет какое-либо отношение к этому?