.Net의 System.Data.OracleClient 를 이용하여 데이터를 select 하던 중 delete 문을 처리하면 오류가 생길까?
하나의 OracleConnection, OracleCommand, OracleDataReader 객체를 하나만 이용해서 처리했기 때문에 오류가 생길 것이라고 생각했었는데 테스트 해보니 문제가 없다. ㅎ
일단 테스트해본 row는 5000 row 인데 처리하는데 문제가 없는 것으로 보아 ExecuteReader() 명령이 한번에 5000개의 데이터를 다 가져와서 그렇거나, OracleCommand 객체를 이용하여 새로운 쿼리를 날리면 다른 세션을 생성해서 그런게 같다.
그리고 MSDN 예제에도 이런식으로 처리하는 예제가 있는 것으로 보아(같은 방식은 아니지만) 그냥 이용해도 괜찮은것 같다.
내가 테스트한 코드는 다음과 같다.
string oradb = ConfigurationManager.ConnectionStrings["stxdev"].ConnectionString; using (OracleConnection conn = new OracleConnection(oradb)) { conn.Open(); using (OracleCommand cmd = new OracleCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT vch1, vch2 FROM xxmsc.xxmsc_temptable"; // 처리정보 select using (OracleDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { string vch1 = reader["vch1"].ToString(); string vch2 = reader["vch2"].ToString(); // 처리중 delete 처리 cmd.Connection = conn; cmd.Transaction = conn.BeginTransaction(); cmd.CommandText = "DELETE FROM xxmsc.xxmsc_temptable WHERE vch1='" + vch1 + "' and vch2 = '" + vch2 + "'"; cmd.ExecuteNonQuery(); cmd.Transaction.Commit(); } } } }
반응형
'프로그래밍 언어 > .Net' 카테고리의 다른 글
.Net에서 오라클 DB Select 하기 (0) | 2013.04.25 |
---|---|
.Net ASP에서 Web.config의 appSettings, connectionStrings 활용하기 (0) | 2013.04.24 |
.Net에서 오라클 DB에 데이터 insert와 트랜잭션 처리 (1) | 2013.04.24 |
.Net 에서 웹의 XML 문서를 파싱하여 필요로 하는 노드만 검색하기 (0) | 2013.04.24 |
Oracle.DataAccess 과 System.Data.OracleClient 의 차이 (0) | 2013.04.23 |