【问题标题】:Does SQLPlus exit after running a script?SQLPlus 是否在运行脚本后退出?
【发布时间】:2014-02-04 04:11:13
【问题描述】:

我们正在使用 CA Workload Control Center (Autosys) 运行一个 Windows 批处理文件,该批处理文件调用另一个批处理文件,该批处理文件使用以下内容调用 SQLPlus:

sqlplus 用户名/密码 %1 %2 %3

由于这一切都是远程完成的,我无法看到服务器上实际发生的情况。

我想知道sqlplus文件是否存在但语法无效(比如引用不存在的表)sqlplus会提示退出并返回批处理文件吗?

我问的原因是因为我正在查看来自 Autosys 的日志文件,它显示进行了 SQLPlus 调用,它在第 2 行打印出错误:无效表,但是它没有显示批处理的任何其他活动之后的脚本,其中有多个回显和文件副本等。似乎它似乎没有退出 SQLPlus?

是否有我需要传递给 SQLPlus 的参数来告诉它退出 SQLPlus 并在运行 SQL 脚本失败后返回调用脚本?

编辑:我们也在我们的 SQL 文件中使用“WHENEVER SQL ERROR”,并且日志文件确实显示了这一点:

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

但我仍然希望它应该继续批处理脚本的其余部分,但它不是,上面是 Autosys 在日志中显示的最后一个

【问题讨论】:

    标签: windows sqlplus autosys


    【解决方案1】:

    查看 SQLPlus 指令 WHENEVER SQLERROR,它在 Oracle 文档中描述:

    http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12052.htm

    【讨论】:

    • 看起来在我们当前使用的 SQL 文件中“WHENEVER SQL ERROR EXIT 1” - 我确实尝试了您提供的链接中的变体“WHENEVER SQLERROR EXIT SQL.SQLCODE”并没有多大作用区别。我将更新我的 Q,我应该注意到它确实显示:“与 Oracle 数据库 11g 企业版版本 11.2.0.3.0 - 64 位生产断开连接,具有分区、真正的应用程序集群、自动存储管理、OLAP、数据挖掘和真正的应用程序测试选项”,所以可能是批处理问题而不是 SQLPlus 问题?
    【解决方案2】:

    找到了解决方案所以发帖:

    你可以做 sqlplus -l test/Test@mydatabase @script.sql; -l 标志意味着它只会尝试连接一次,如果由于任何原因失败将退出而不是提示。查看 sqlplus -? 的输出,或者查看documentation

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2010-11-27
      相关资源
      最近更新 更多