Je suis sûr que cette question a déjà été répondue, mais je n'ai pas pu trouver de réponse à l'aide de l'outil de recherche.
En utilisant c #, j'aimerais exécuter un fichier .sql. Le fichier sql contient plusieurs instructions sql, dont certaines sont réparties sur plusieurs lignes. J'ai essayé de lire le fichier et j'ai essayé d'exécuter le fichier en utilisant ODP.NET ... mais je ne pense pas qu'ExecuteNonQuery soit vraiment conçu pour faire cela.
J'ai donc essayé d'utiliser sqlplus via la création d'un processus ... Cependant, à moins que je ne lance le processus avec UseShellExecute défini sur true, sqlplus se bloquerait et ne quitterait jamais. Voici le code qui NE FONCTIONNE PAS.
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;
bool started = p.Start();
p.WaitForExit();
WaitForExit ne retourne jamais .... Sauf si j'ai défini UseShellExecute sur true. Un effet secondaire de UseShellExecute est que vous ne pouvez pas capturer la sortie redirigée.