2017-10-24 19 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; 
      } 
     } 

あなたは複数のテーブルとより多くのロジックとのトランザクションがある何かをしたい場合データベース内にストアドプロシージャを構築し、パラメータと一緒に^を呼び出すことを検討することができます。

関連する問題