2012-03-09 128 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