我有以下批处理脚本:
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
,然后运行第二个文件。不确定如何让两个文件都执行。 ??
答案 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,然后退出它来解决这个问题。我还没有找到解决这个限制的方法。虽然如果您按照建议使用@@
,您只需要处理一次该问题。您只需要从第一个脚本运行第二个脚本。