SQL*PLUS - SET LINESIZE 在我的脚本中假脱机时没有任何效果



我使用的是PL/SQL Developer 11.0.6.1776版

以下脚本在指定路径上创建一个名为"test"的文件夹,并在其中创建一个子文件夹,其中包含当前正在后台处理以将其元数据存储在该文件夹中的表的名称:

set pagesize 0
set long 90000
set linesize 10000
SET TERMOUT OFF
spool out.sql
select 'host mkdir ''C:Userspersonaltest'''||';'||chr(13)||chr(10)|| --Creating the new folder
'host mkdir '||''''||'C:Usersafpuchntest'||REPLACE(table_name, '$', '_')||''''||';'||chr(13)||chr(10)|| --Creating a subfolder
'spool C:Userspersonaltest'||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:Userspersonaltest';
host mkdir 'C:UserspersonaltestED_EXTR_CSV_PRIM_DEA_PUBLI';
spool C:UsersafpuchntestED_EXTR_CSV_PRIM_DEA_PUBLIED_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版本与此有任何关系吗?

根据手册,PL/SQL Developer命令窗口不支持

set linesize。如果您想创建和运行SQL*Plus脚本,我强烈建议您从命令行使用实际的SQL*Plus,而不是模仿。

我非常喜欢使用PL/SQL Developer编写程序和工作表,但这不是一个很好的脚本环境。SQL*Plus也是如此,但SQL*Plus至少简单且可在各种平台上兼容,这就是为什么许多DBA使用该工具运行脚本的原因。

最新更新