2014-01-15 62 views
0

我们使用CA工作量控制中心(Autosys)来运行它调用其与下面的调用的SQLPlus另一个批处理文件Windows批处理文件:运行脚本后SQLPlus退出吗?

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

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

我想知道如果sqlplus文件存在,但具有无效的语法(如引用不存在的表)将sqlplus提示退出并返回到批处理文件?

我问的原因是因为我正在查看来自Autosys的日志文件,它显示SQLPlus调用已完成,它在第2行打印出错误:无效表,但它不显示任何其他活动批处理脚本之后有多个回声和文件副本等。看起来好像它不退出SQLPlus也许?

是否有一个parm我需要传递给SQLPlus,告诉它退出SQLPlus并在运行SQL脚本后返回调用脚本,如果它失败了?

编辑:我们使用“每当SQL ERROR”我们的SQL文件的内部以及和日志文件确实表现出这一点:

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在日志中显示

回答

0

找到了解决办法SO帖子:

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

0

见的SQLPlus指令WHENEVER SQLERROR,它描述了甲骨文的文档:

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

+0

我会给这看看,谢谢 – Kairan

+0

它看起来像我们当前正在使用的SQL文件“WHENEVER SQL ERROR EXIT 1” - 我曾尝试在您提供的“WHENEVER SQLERROR EXIT SQL.SQLCODE”链接的变体didn'没有什么不同。我将更新我的Q,我应该注意它确实显示:“与Oracle数据库11g企业版版本11.2.0.3.0 - 64位生产 断开连接使用分区,真正应用集群,自动存储管理,OLAP, 数据挖掘和实时应用程序测试选项“,所以也许它是一个批处理问题,而不是一个SQLPlus问题? – Kairan