我在C:\temp\SQL\alex.sql
和C:\temp\alex.ps1
中收到了两个文件。
在C:\temp\SQL\alex.sql
中,这只是
select count(*) from user_tables;
quit;
在C:\temp\alex.ps1
中,即
$cmd = "sqlplus";
$args = "user/password@server/sid @C:\temp\SQL\alex.sql";
&$cmd $args;
我在命令提示符
中尝试了该命令 完美执行的 sqlplus user/password@server/sid @C:\temp\SQL\alex.sql
!
根本不执行SQL文件,但会显示 SQL * Plus帮助。
我做错了什么?谢谢!
答案 0 :(得分:3)
我自己找到了解决方案
我使用cmd.exe /c
,而alex.ps1
现在是
$cmd = "cmd.exe";
$args = "/c sqlplus user/password@server/sid @C:\temp\SQL\alex.sql";
&$cmd $args;
希望得到这个帮助。
答案 1 :(得分:0)
要为@Alex Yeung提供替代解决方案,您只需使用PowerShell &
调用命令即可直接运行语句,而无需使用cmd.exe
:
&sqlplus user/password@server @C:\path\script.sql
考虑将以下内容添加到脚本文件的底部,以确保SQLPlus在运行完毕后关闭:
DISCO -- Disconnect
EXIT -- Exit SQLPlus