Ich bin mir sicher, dass diese Frage bereits beantwortet wurde, konnte jedoch mit dem Suchwerkzeug keine Antwort finden.
Mit c # möchte ich eine .sql-Datei ausführen. Die SQL-Datei enthält mehrere SQL-Anweisungen, von denen einige über mehrere Zeilen verteilt sind. Ich habe versucht, die Datei einzulesen und die Datei mit ODP.NET auszuführen. Ich glaube jedoch nicht, dass ExecuteNonQuery wirklich dafür ausgelegt ist.
Also habe ich versucht, sqlplus über das Laichen eines Prozesses zu verwenden. Wenn ich den Prozess jedoch nicht mit UseShellExecute erzeugt habe, das auf true gesetzt ist, würde sqlplus hängen bleiben und niemals beendet werden. Hier ist der Code, der nicht funktioniert.
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 kehrt nie zurück ... Es sei denn, ich setze UseShellExecute auf true. Ein Nebeneffekt von UseShellExecute ist, dass Sie die umgeleitete Ausgabe nicht erfassen können.