我们正在使用CA Workload Control Center(Autosys)运行一个Windows批处理文件,该文件调用另一个调用SQLPlus的批处理文件,其中包含以下内容:
sqlplus用户名/密码%1%2%3
由于这一切都是远程完成的,我无法看到服务器上实际发生了什么。
我想知道sqlplus文件是否存在但是语法无效(比如引用不存在的表)sqlplus提示符会退出并返回批处理文件吗?
我问的原因是因为我正在查看来自Autosys的日志文件并且它显示了SQLPlus调用,它打印出ERROR AT LINE 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
但是我仍然期望它应该继续使用Batch脚本的其余部分,但不是,上面是Autosys在日志中显示的最后一个
答案 0 :(得分:0)
请参阅SQLPlus指令WHENEVER SQLERROR,它在Oracle文档中描述:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12052.htm
答案 1 :(得分:0)
找到解决方案SO Post:
你可以做sqlplus -l test / Test @ mydatabase @ script.sql; -l标志表示它只会尝试连接一次,如果由于任何原因失败将退出而不是提示。查看sqlplus - ?的输出,或查看documentation。