DOS / sqlplus“句柄无效”错误?

时间:2009-12-09 21:30:27

标签: oracle batch-file dos sqlplus

我有以下批处理脚本:

sqlplus ms/ms@orcl < drop.sql
sqlplus ms/ms@orcl < create.1.0.sql

当我在Windows资源管理器中双击bat文件并运行它时,这可以正常工作。

但是当我从DOS提示符输入命令名称时出现错误:

C:\>create.bat

C:\>sqlplus ms/ms@orcl  0<drop.sql
The handle is invalid.

C:\>sqlplus ms/ms@orcl  0<create.1.0.sql
The handle is invalid

有什么想法吗?


更新:进行更改以使用@代替<。这可以解决错误,但现在脚本只执行第一个文件,然后离开SQL>提示符。要获取第二个文件,必须在提示符下键入exit,然后运行第二个文件。不确定如何让两个文件都执行。 ??

2 个答案:

答案 0 :(得分:4)

如果希望SQL * PLUS执行脚本,比命令行重定向更好的方法是@语法:

sqlplus ms/ms@orcl @drop.sql
sqlplus ms/ms@orcl @create.1.0.sql

另请阅读@@语法,您可以使用该语法从同一目录中的另一个.sql脚本执行.sql脚本。

SQL> help @
SQL> help @@

答案 1 :(得分:0)

  

更改为使用@而不是&lt;。   这解决了错误,但现在   脚本只执行第一个文件   然后离开你的SQL&gt;   提示。要获取第二个文件   执行你必须输入退出   提示,然后运行第二个文件。不   确定如何让两个文件都执行。   ??

我最终编写了一个python脚本来运行sql plus,然后退出它来解决这个问题。我还没有找到解决这个限制的方法。虽然如果您按照建议使用@@,您只需要处理一次该问题。您只需要从第一个脚本运行第二个脚本。