我使用的是PLSQL Developer 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, 但由于某些原因它是不完整的 而其他的文件只有部分名称
我感谢任何帮助解决这个问题
那么,在SQL*Plus中,它是e.g.
set linesize 100
设置它的长度。我不知道在PLSQL 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
这就是为什么我不确定它是否真的会有帮助,但是--你可以试试。