SQL Plus - SET命令不影响正在运行的脚本

时间:2014-12-24 16:52:24

标签: oracle sqlplus

我试图运行以下SQLPlus *命令集:

/usr/tmp/> sqlplus -s / @my_test_script param1 param2 <<-EOF
SET ECHO OFF
SET HEADING OFF
SET VERIFY OFF
SET TERMOUT OFF
SET FEEDBACK OFF
SET PAGES 0
SET LINESIZE 400
EXIT
EOF

SET命令应该禁止我运行的脚本的输出 - 但它们没有任何效果,因为脚本本身可能有不同的范围&#34;适用于ECHO,HEADING等 只有将所有这些SET命令移动到脚本文件本身后才会抑制输出。

由于这段代码最终应该变成用于运行其他SQL脚本的通用脚本,因此将这些SET命令放在每个脚本中并不是一个好的解决方案。

是否有人知道在相同的SQLPlus *&#34;会话&#34;中运行脚本的强制SET命令值的方法?

2 个答案:

答案 0 :(得分:2)

我同意香农。您可以尝试以下代码(稍微更改顺序):

/usr/tmp/> sqlplus -s / <<-EOF
SET ECHO OFF
SET HEADING OFF
SET VERIFY OFF
SET TERMOUT OFF
SET FEEDBACK OFF
SET PAGES 0
SET LINESIZE 400
@my_test_script param1 param2
EXIT
EOF

答案 1 :(得分:1)

如果我记得很清楚,你可以使用@@命令从每个脚本调用这个初始化脚本。例如:

@@init.sql

source

修改

也来自oracle documentation

  

SQL * Plus还支持在站点配置文件之后执行的用户配置文件。该文件通常名为login.sql。 SQL * Plus搜索当前目录中的用户配置文件,然后搜索使用SQLPATH环境变量指定的目录。 SQL * Plus按列出的顺序搜索以冒号分隔的目录列表。

     

您可以向用户配置文件添加任何SQL命令,PL / SQL块或SQL * Plus命令。当您启动SQL * Plus时,它会自动搜索您的用户配置文件并运行它包含的命令。