Установите размер строки для буферизации в команде windows - PullRequest
0 голосов
/ 25 марта 2020

Я использую PL / SQL Версия разработчика 11.0.6.1776

Когда я запускаю скрипт в моем командном окне, имя файла, который я спулингу, является неполным.

У меня есть такой скрипт:

set pagesize 0
set long 90000
SET TERMOUT OFF
spool out.sql

select 'spool C:\Users\personal\MAIN_USR\index\'||REPLACE(index_name, '$', '_')||'.txt'||chr(13)||chr(10)||
'SELECT DBMS_METADATA.GET_DDL(''INDEX'','''||index_name||''',''MTO_INDX'') '||chr(13)||chr(10)||
'FROM DUAL;'||chr(13)||chr(10)||
'spool off' as cmd
FROM user_indexes ui
INNER JOIN MTTO_TAB_EXIST_ALL tea USING(table_name)
WHERE tea.MRK_DEL_PERM = 'Y'
AND tea.OWNER_NM = 'MTO_INDX'
AND MCA_BACKUP_DDL != 'Y';

spool off

@OUT.SQL

exit

В спулинге некоторые файлы выглядят так:

spool C:\Users\personal\MAIN_USR\index\CIA_PRD_PRDR_DISTR_INV_3242.t

Расширение файла должно быть .txt, но по какой-то причине оно является неполным, и другие файлы спулинга имеют только часть имени

Я ценю любую помощь, чтобы исправить это

1 Ответ

0 голосов
/ 25 марта 2020

Ну, в SQL* Плюс, например,

set linesize 100

устанавливает его длину. Я не знаю, работает ли он в PL / SQL Developer.

С другой стороны, даже если для размера строки задано меньшее число (например, 50), SQL* Plus будет «разбить» строку и переместить остальную часть текста в следующую строку:

SQL> set linesize 50
SQL>
SQL> select 'spool C:\Users\personal\MAIN_USR\index\'||REPLACE(index_name, '$', '_')||'.txt'||chr(13)||chr(10)||
  2  'SELECT DBMS_METADATA.GET_DDL(''INDEX'','''||index_name||''',''MTO_INDX'') '||chr(13)||chr(10)||
  3  'FROM DUAL;'||chr(13)||chr(10)||
  4  'spool off' as cmd
  5  from (select 'i01_abc_omm' index_name from dual);

CMD
--------------------------------------------------
spool C:\Users\personal\MAIN_USR\index\i01_abc_omm
.txt                                                      --> see? Moved to the next line
SELECT DBMS_METADATA.GET_DDL('INDEX','i01_abc_omm'
,'MTO_INDX')
FROM DUAL;
spool off

Вот почему я не уверен, что это действительно поможет, но - вы можете попробовать.

...