2016-03-28 14 views
0

私はc#とOracle Dotnet Providerを使用していて、executeNonQuery()メソッドを使用して複数の行を同時に挿入しようとしています。Oracle Dotnet ProviderとINSERT ALLステートメント

しかし、クエリは終了せず、この時点でアプリケーションがハングします。

私は既にSqlDeveloperツールで同じクエリをテストしました。

OracleDotnetProvideがINSERT ALL文をサポートしているかどうかは誰にでも分かりますか? そして/または、何が実行に間違っているかを確認する方法があれば?

INSERT ALL 
INTO ESRI_STG.STD_GIS_CUSTOMER (GIS_ID, GEOM) VALUES (53791115,NULL) 
INTO ESRI_STG.STD_GIS_CUSTOMER (GIS_ID, GEOM) VALUES (53791123,NULL) 
INTO ESRI_STG.STD_GIS_CUSTOMER (GIS_ID, GEOM) VALUES (53791131,NULL) 
SELECT * FROM dual 

以下はクエリ実行のためのC#コードである:ここで

はクエリです。私は明示的な取引の有無にかかわらず試しました:

using System; 
using Oracle.ManagedDataAccess.Client; 

     public static int executeQuery(string sql_query) 
     { 
      using (OracleConnection oracleLink = new OracleConnection(oracleConnectionString)) 
      { 
       using (OracleCommand comm = new OracleCommand(sql_query, oracleLink)) 
       { 
        try 
        { 
         oracleLink.Open(); 
         //OracleTransaction txn = oracleLink.BeginTransaction(); 
         int linhasAfetadas = comm.ExecuteNonQuery(); 
         //comm.Transaction.Commit(); 
         return linhasAfetadas; 
        } 
        catch (Exception e1) 
        { 
         Console.WriteLine(e1.Message); 
         return -1; 
        } 
       } 
      } 
     } 
+0

C#コードを表示してください。 –

答えて

0

見つけました!

同じ資格情報、同じデータベースなどで接続されたSql Developerを使用していました。 SqlDeveloperから接続を解除すると、(Visual Studioのデバッグ時の)クエリが正しく実行されました。

私は正確な説明は分かりませんが、セッション制限のようですが、おそらくトランザクションに関係しているようです。

+1

おそらく、SQLデベロッパーでコミットされていない変更がありました。 – gislikonrad

関連する問題