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