Eminim bu soru zaten cevaplanmıştır, ancak arama aracını kullanarak bir cevap bulamadım.
C # kullanarak bir .sql dosyası çalıştırmak istiyorum. Sql dosyası, bazıları birden çok satıra bölünmüş birden fazla sql ifadesi içerir. Dosyada okuma denedim ve ODP.NET kullanarak dosyayı yürütmeye çalıştım ... Ancak ben ExecuteNonQuery gerçekten bunu yapmak için tasarlanmış olduğunu sanmıyorum.
Bu yüzden bir süreç yumurtlama yoluyla sqlplus kullanmayı denedim ... Ancak sürece UseShellExecute gerçek sqlplus için ayarlanmış olan süreç yumurtlama asmak ve asla çıkmak. İşte ÇALIŞMAYAN kod.
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 hiçbir zaman geri dönmez .... UseShellExecute öğesini true olarak ayarlamazsam. UseShellExecute öğesinin bir yan etkisi, yeniden yönlendirilen çıktıyı yakalayamamanızdır.