0

我有以下批处理脚本:

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在提示符下键入,然后运行第二个文件。不知道如何让两个文件都执行。??

4

2 回答 2

4

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

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

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

SQL> help @
SQL> help @@
于 2009-12-10T02:03:48.763 回答
0

更改为使用 @ 而不是 <。这绕过了错误,但现在脚本只执行第一个文件,然后将您留在 SQL> 提示符下。要执行第二个文件,您必须在提示符下键入 exit,然后第二个文件运行。不知道如何让两个文件都执行。??

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

于 2009-12-10T17:22:25.533 回答