首页 文章

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

提问于
浏览
0

我正在尝试运行以下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命令应该禁止我正在运行的脚本的输出 - 但它们没有任何效果,因为脚本本身可能具有不同的“范围”ECHO,HEADING等 . 输出仅在我全部移动时被抑制那些SET命令进入脚本文件本身 .

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

有没有人知道在同一个SQLPlus *“会话”中运行的脚本上强制SET命令值的方法?

2 回答

  • 1

    我同意香农 . 您可以尝试以下代码(稍微改变排序):

    /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
    
  • 2

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

    @@init.sql
    

    source

    EDIT

    另外,来自oracle documentation

    SQL * Plus还支持在站点配置文件之后执行的用户配置文件 . 该文件通常名为login.sql . SQL * Plus搜索当前目录中的用户配置文件,然后搜索使用SQLPATH环境变量指定的目录 . SQL * Plus按列出的顺序搜索以冒号分隔的目录列表 . 您可以将任何SQL命令,PL / SQL块或SQL * Plus命令添加到用户配置文件中 . 当您启动SQL * Plus时,它会自动搜索您的用户配置文件并运行它包含的命令 .

相关问题