我的 sqlplus 命令没有完成,它在密码行上等待,它没有给我错误。
当我打开新的 cmd 窗口并粘贴此代码时,此代码没有问题!一切正常,但我无法使用 process() 在 c# 上运行;
我的 sqlplus 命令文本:
Set ORACLE_SID=prod
Set ORACLE_HOME=C:\oracle\product\10.2.0\db_1
sqlplus -s
sys as sysdba
password
shutdown immediate
startup mount
recover standby database until cancel;
cancel
alter database open read only;
exit;
exit;
我试试这个:
C:\cmd.cmd
*********************************************
Set ORACLE_SID=prod
Set ORACLE_HOME=C:\oracle\product\10.2.0\db_1
sqlplus -s
sys as sysdba
manager
select * from dual;
exit;
*********************************************
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\cmd.cmd";
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
process = Process.Start(startInfo);
//output
string BatProcessResult = process.StandardOutput.ReadToEnd();
输出:
D:\AppPath\bin\Debug>设置 ORACLE_SID=prod
D:\AppPath\bin\Debug>设置 ORACLE_HOME=C:\oracle\product\10.2.0\db_1
D:\AppPath\bin\Debug>sqlplus -s
D:\AppPath\bin\Debug>sys as sysdba;