Sono sicuro che questa domanda abbia già ricevuto una risposta, tuttavia non sono riuscito a trovare una risposta utilizzando lo strumento di ricerca.
Usando c # vorrei eseguire un file .sql. Il file sql contiene più istruzioni sql, alcune delle quali sono suddivise su più righe. Ho provato a leggere il file e ho provato a eseguire il file usando ODP.NET ... tuttavia non credo che ExecuteNonQuery sia davvero progettato per fare questo.
Quindi ho provato a usare sqlplus generando un processo ... tuttavia, a meno che non avessi generato il processo con UseShellExecute impostato su sqlplus vero, si sarebbe bloccato e non sarebbe mai uscito. Ecco il codice che NON FUNZIONA.
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 non restituisce mai .... A meno che non imposti UseShellExecute su true. Un effetto collaterale di UseShellExecute è che non è possibile acquisire l'output reindirizzato.