运行Oracle SQL脚本并通过命令提示符从sqlplus.exe退出

我想通过Windows命令提示符通过SQL Plus运行Oracle脚本。 该脚本不包含“退出”命令,但我仍然希望SQL Plus退出,并在完成脚本时将控制权返回给命令提示符。 我的目标是在修改脚本的情况下执行此操作。 这可能吗?

另一种方法是在batch file中使用这个命令:

echo exit | sqlplus user/pass@connect @scriptname 

现在意识到你的问题可能与sql文件本身有关,意识到sqlplus需要被告知退出。 我这样做的方式是:

从双select*;

放弃;
 /

(斜杠很重要,它告诉sqlplus执行它上面的statemet(s))。

隐藏用户信息和退出的最佳方式是:

 exit | sqlplus -S user/pwd@server @script.sql 

exit提供给sqlplus的输出强制它退出。 -S表示所有的服务器输出,然后是脚本中的sql查询。

我发现这是最好的解决scheme,它在terminal或脚本内工作:

 echo @scriptname | sqlplus username/password@connect 

你也可以在你的shell脚本中做到这一点。

 sqlplus /nolog <<EOF connect user/pass @run_some_file.sql select * from dual; EOF 

你可能需要逃避“;” 与\。

喜欢这个:

  sqlplus / nolog用户名/密码@ tnsname @filename 

如果你把它放在一个batch file中,控制将继续执行下面的语句。

编辑:我不好,再次尝试/诺洛克国旗

是的,这是可能的 – 生成一个包装脚本,它适当地设置SQLPlus,包括你的脚本(即@YourTargetScript.sql ),然后退出。

这就是说,我不推荐这种方法 – SQLPlus有很多程序使用的问题; 在过去使用Oracle编写shell脚本时,我在它周围build立了一个Python包装器(添加了更合理的error handling行为,stdout / stderr之间的输出分离,本地CSV输出支持以及其他类似的好东西)好多了。

对于那些担心在脚本中包含密码的安全问题,AskTom有一篇关于“外部识别”的文章。http://asktom.oracle.com/pls/apex/f?p = 100:11:0 :::: P11_QUESTION_ID:142212348066

在你的SQL脚本中添加EXIT。 这里是我的test.bat文件的例子如下:

sqlplus user / pwd @ server @ test.SQL> myLOG.LOG

我的test.sql文件如下:select * from dual; 出口

退出| SQLPLUS / @ @

这是正确的解决scheme,我试过它的工作