Tenho certeza de que esta pergunta já foi respondida, mas não consegui encontrar uma resposta usando a ferramenta de pesquisa.
Usando c #, eu gostaria de executar um arquivo .sql. O arquivo sql contém várias instruções sql, algumas das quais são divididas em várias linhas. Eu tentei ler o arquivo e tentei executá-lo usando o ODP.NET ... no entanto, não acho que o ExecuteNonQuery seja realmente projetado para fazer isso.
Então, tentei usar o sqlplus via gerar um processo ... no entanto, a menos que eu gerasse o processo com UseShellExecute definido como true, o sqlplus seria interrompido e nunca sairia. Aqui está o código que NÃO FUNCIONA.
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 nunca retorna .... A menos que eu defina UseShellExecute como true. Um efeito colateral do UseShellExecute é que você não pode capturar a saída redirecionada.