Я уверен, что на этот вопрос уже был дан ответ, однако мне не удалось найти ответ с помощью инструмента поиска.
Используя С #, я хотел бы запустить файл .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 заключается в том, что вы не можете захватить перенаправленный вывод.