PLSQL-将行大小设置为在命令窗口中后台打印的行

问题描述 投票:0回答:1

我正在使用PL / SQL 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,但是由于某些原因它不完整,并且其他假脱机文件只有一部分名称

感谢您为解决此问题提供的帮助

oracle sqlplus plsqldeveloper spool
1个回答
0
投票

嗯,在SQL * Plus中,例如。

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

这就是为什么我不确定它是否会有所帮助,但是-您可以尝试。

© www.soinside.com 2019 - 2024. All rights reserved.