从命令行使用SQL*Plus

从命令行使用SQL*Plus,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我有一个小的vbscript来加载数据并使用sqlldr和sqlplus处理它。不过,关于sqlplus的使用,我有两个问题: 1) 我是否可以在不使用.sql脚本文件的情况下执行存储过程? e、 g.sqlplus用户/pass@server@exec proc_myname 2) 我可以在共享UNC路径上使用.sql脚本文件吗? e、 g.sqlplus用户/pass@server@\server\path\script.sql 我已经尝试过使用本地临时目录来存储sql文件,目前正在解决这个

我有一个小的vbscript来加载数据并使用sqlldr和sqlplus处理它。不过,关于sqlplus的使用,我有两个问题:

1) 我是否可以在不使用.sql脚本文件的情况下执行存储过程? e、 g.sqlplus用户/pass@server@exec proc_myname

2) 我可以在共享UNC路径上使用.sql脚本文件吗? e、 g.sqlplus用户/pass@server@\server\path\script.sql

我已经尝试过使用本地临时目录来存储sql文件,目前正在解决这个问题。但我很好奇是否有其他/更好的方法

谢谢

我是否可以在不使用.sql脚本文件的情况下执行存储过程

对。我不知道VisualBasic是否足够好,但基本原则是为
sqlplus
创建子进程,然后通过stdin发送命令(即,让脚本写入子进程的标准输入)

我可以在共享UNC路径上使用.sql脚本文件吗

如果路径是正确的,那么这应该是可行的。您还可以尝试I/O重定向:

sqlplus user/pass@server < \\server\path\script.sql
sqlplus /nolog "@\\server\path\file.sql"
sqlplus用户/pass@server<\\server\path\script.sql

这种方法的缺点是错误消息不包含.sql脚本名称。

关于第二个问题:

从UNC路径运行脚本对我有效,无需驱动器映射或I/O重定向:

sqlplus user/pass@server < \\server\path\script.sql
sqlplus /nolog "@\\server\path\file.sql"
sqlplus版本12.2.0.1

显然,引号和“@”很重要。

谢谢你的回答,我在UNC路径上运气不好,但我会继续尝试——只要我知道可能,我很乐意尝试:)也许代码使用了错误的Windows API。您是否尝试将共享映射到驱动器号?