Я впевнений, що на це питання вже відповіли, проте мені не вдалося знайти відповідь за допомогою інструменту пошуку.
Використовуючи c # Я хотів би запустити .sql файл. Файл sql містить кілька операторів sql, деякі з яких розбиті на кілька рядків. Я спробував прочитати файл і спробував виконати файл за допомогою ODP.NET ... однак я не думаю, що ExecuteNonQuery дійсно призначений для цього.
Тому я спробував використовувати sqlplus через нерестуючий процес ... однак, якщо я не породив цей процес за допомогою UseShellExecute, встановленого на true, sqlplus не зависне і ніколи не вийде. Ось код, НЕ РОБОТИ.
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 ніколи не повертається .... Якщо я не встановив UseShellExecute на true. Побічним ефектом UseShellExecute є те, що ви не можете зафіксувати перенаправлений вихід.