Я уверен, что на этот вопрос уже был дан ответ, однако я не смог найти ответ, используя инструмент поиска.
С помощью С# я хочу запустить файл .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/[email protected]{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;
bool started = p.Start();
p.WaitForExit();
WaitForExit никогда не возвращается... Если я не установил UseShellExecute в true. Побочным эффектом UseShellExecute является то, что вы не можете захватить перенаправленный вывод.