Estoy seguro de que esta pregunta ya ha sido respondida, sin embargo, no pude encontrar una respuesta usando la herramienta de búsqueda.
Usando c # me gustaría ejecutar un archivo .sql. El archivo sql contiene varias declaraciones sql, algunas de las cuales están divididas en varias líneas. Intenté leer el archivo e intenté ejecutar el archivo usando ODP.NET ... sin embargo, no creo que ExecuteNonQuery esté realmente diseñado para hacer esto.
Así que intenté usar sqlplus para generar un proceso ... sin embargo, a menos que haya generado el proceso con UseShellExecute establecido en verdadero, sqlplus se colgaría y nunca saldría. Aquí está el código que NO 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 regresa ... A menos que establezca UseShellExecute en verdadero. Un efecto secundario de UseShellExecute es que no puede capturar la salida redirigida.