Comment exécuter des commandes sqlplus cmd.exe?

Mon sqlplus commande ne marche pas fini , c'attendre sur la ligne de mot de passe,il ne pas me donner d'erreur.

Ce code ne marche pas de problème quand j'ouvre la nouvelle fenêtre cmd et collez ce code ! tout est ok,
mais je ne peux pas fonctionner sur c# à l'aide de processus();

Mon sqlplus le texte de la commande:

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;

J'ai essayer ceci :

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();

De sortie:

D:\AppPath\bin\Debug>Défini ORACLE_SID=prod

D:\AppPath\bin\Debug>Défini ORACLE_HOME=C:\oracle\produit\10.2.0\appelée db_1

D:\AppPath\bin\Debug>sqlplus -s

D:\AppPath\bin\Debug>sys en tant que sysdba;

  • Je ne me souviens pas exactement, mais c'est quelque chose comme cela dans le script: sqlplus -s "sys@wherever/password as sysdba". Les guillemets sont nécessaires en raison de l'espace.
  • thx, j'ai trouvé la solution , de la syntaxe du nom d'utilisateur/pw@db
  • Excellent - je suis content que vous l'avez trouvé! Les guillemets peuvent être un unix/linux chose. Notez que Oracle va accepter username/pw@db ou username@db/pw.
InformationsquelleAutor Mennan | 2013-09-17