2012-03-09 131 views
1

我在C:\temp\SQL\alex.sqlC:\temp\alex.ps1中获得了两个文件。从PowerShell执行SQL * Plus

C:\temp\SQL\alex.sql,那简直是

select count(*) from user_tables; 
quit; 

C:\temp\alex.ps1,即

$cmd = "sqlplus"; 
$args = "user/[email protected]/sid @C:\temp\SQL\alex.sql"; 
&$cmd $args; 

我试着命令在命令提示符下

sqlplus user/[email protected]/sid @C:\temp\SQL\alex.sql其完美执行!

SQL文件根本不被执行,但是显示SQL * Plus帮助

我做错了什么?谢谢!

回答

3

我找到了解决自己

我用cmd.exe /calex.ps1现在是

$cmd = "cmd.exe"; 
$args = "/c sqlplus user/[email protected]/sid @C:\temp\SQL\alex.sql"; 
&$cmd $args; 

希望这有助于。

+0

请问您可以分享为什么要这样做吗? – Pratik 2015-05-04 13:27:33

0

提供一个替代解决方案@Alex杨,你可以简单地使用PowerShell的&调用命令来直接运行该语句,而不需要使用cmd.exe

&sqlplus user/[email protected] @C:\path\script.sql 

考虑加入下面的底部的脚本文件,以确保SQLPlus在其运行完成后关闭:

DISCO -- Disconnect 
EXIT -- Exit SQLPlus