이 질문에 이미 답변이 되었음에도 불구하고 검색 도구를 사용하여 답변을 찾을 수 없습니다.
C #을 사용하여 .sql 파일을 실행하고 싶습니다. sql 파일에는 여러 개의 sql 문이 포함되어 있으며 일부는 여러 줄로 나뉩니다. 파일을 읽고 ODP.NET을 사용하여 파일을 실행하려고 시도했지만 ... ExecuteNonQuery가 실제로이 작업을 수행한다고 생각하지 않습니다.
따라서 프로세스 생성을 통해 sqlplus를 사용해 보았습니다 ...하지만 UseShellExecute가 true로 설정된 프로세스를 생성하지 않으면 sqlplus가 중단되고 종료되지 않습니다. 작동하지 않는 코드는 다음과 같습니다.
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는 ...를 반환하지 않습니다. UseShellExecute를 true로 설정하지 않으면 UseShellExecute의 부작용은 리디렉션 된 출력을 캡처 할 수 없다는 것입니다.