2012-03-09 5 views
1

У меня два файла в C:\temp\SQL\alex.sql и в C:\temp\alex.ps1.Выполнить SQL * Plus из PowerShell

В 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; 

Я попробовал команду в Command Prompt

sqlplus user/[email protected]/sid @C:\temp\SQL\alex.sql, который выполнен отлично!

Файл SQL не выполняется вообще, но SQL * Plus help.

Что я сделал не так? Благодаря!

ответ

3

Я нашел решение самого

Я использую cmd.exe /c и alex.ps1 теперь

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

Надеется, что это поможет.

+0

Не могли бы вы рассказать, почему вы это сделали? – Pratik

0

Чтобы предложить альтернативное решение @Alex Енг, вы можете просто использовать команду PowerShell & вызова для выполнения оператора напрямую, без необходимости использовать cmd.exe:

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

Рассмотрим добавив следующую строку в нижней вашего файла сценария, чтобы гарантировать, что SQLPlus будет закрыт, когда он закончит работу:

DISCO -- Disconnect 
EXIT -- Exit SQLPlus 
Смежные вопросы