SQL* PLUS - SET LINESIZE не оказывает никакого влияния на мой скрипт, пока он спулинг - PullRequest
1 голос
/ 01 апреля 2020

Я использую 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 имеет какое-либо отношение к этому?

1 Ответ

1 голос
/ 02 апреля 2020

set linesize не поддерживается командным окном PL / SQL Developer, согласно руководству. Если вы хотите создавать и запускать сценарии SQL* Plus, я настоятельно рекомендую вам использовать SQL* Plus из командной строки, а не имитацию.

Я большой поклонник использования PL / SQL Разработчик для написания программ и рабочих листов, но это не очень хорошая среда для написания сценариев. SQL* Plus тоже не является, но SQL* Plus, по крайней мере, прост и совместим с широким спектром платформ, поэтому многие администраторы баз данных используют этот инструмент для запуска сценариев.

...