2017-10-24 2 views
0

다음 기능을 실행하려고합니다. 그러나 명령이 제대로 끝나지 않아 오류가 발생합니다. 하지만 데이터베이스에서 실행 중일 때 제대로 실행되고 있습니다 :단일 쿼리에서 다중 삭제 문

string sql = @"Delete FROM table1 WHERE idtest in (Select istest from table12 Where case_id=:caseID); 
          Delete from table12 Where case_id=:caseID ; 
          Delete from table13 Where case_id=:caseID ; 
          Delete from table14 Where case_id=:caseID ; 
          Delete from table15 Where case_id=:caseID ; 
          "; 

      using (OracleConnection Conn = new OracleConnection()) 
      { 
       try 
       { 
        oh.InitOraConn(Conn); 
        using (OracleCommand cmd = new OracleCommand("", Conn)) 
        { 
         cmd.Connection = Conn; 
         cmd.CommandText = sql; 
         cmd.Parameters.Add("caseID", caseId); 
         cmd.ExecuteNonQuery(); 
        } 
       } 
       catch (Exception Ex) 
       { 
        throw Ex; 
       } 
      } 

그래서 잘못된 정보를 알려주십시오.

+0

[답변] (https://stackoverflow.com/questions/31917301/execute-multiple-queries-in-single-oracle-command-in-c-sharp/31918260#31918260) 도움이 될 것입니다. –

+0

만약 내가 틀렸어도 PL/SQL 블록에 모든 SQL을 래핑 할 수 있다면 나에게 모두 맞을까요? –

답변

0
  • 당신은 단지 하나의 SQL을 실행할 수는
  • ;이 같은

필요가 없습니다 명령 :

 using (OracleConnection Conn = new OracleConnection()) 
     { 
      try 
      { 
       oh.InitOraConn(Conn); 
       using (OracleCommand cmd = new OracleCommand("", Conn)) 
       { 
        cmd.Connection = Conn; 
        cmd.CommandText = @"Delete FROM table1 WHERE idtest in (Select istest from table12 Where case_id=:caseID)"; 
        cmd.Parameters.Add("caseID", caseId); 
        cmd.ExecuteNonQuery(); 
        cmd.CommandText = @"Delete from table12 Where case_id=:caseID "; 
        cmd.Parameters.Add("caseID", caseId); 
        cmd.ExecuteNonQuery(); 
        ... and so on 

       } 
      } 
      catch (Exception Ex) 
      { 
       throw Ex; 
      } 
     } 

당신은 더 많은 테이블과 많은 논리와 트랜잭션이 무언가를 원하는 경우 , 데이터베이스에 스토어드 프로 시저를 구축하고 매개 변수로 ^를 호출하는 것을 고려할 수 있습니다.