Oracle Dotnet Provider和INSERT ALL语句

时间:2016-03-28 15:11:28

标签: c# oracle odp.net psql

我正在使用c#和Oracle Dotnet Provider,并尝试使用executeNonQuery()方法一次插入多行。

但查询永远不会结束,应用程序就会挂起。

我已经在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;
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

发现它!

我使用的是Sql Developer,使用相同的凭据,相同的数据库等连接。 一旦我从SqlDeveloper断开连接,我的查询(在visual studio debug)运行正常。

我不知道确切的解释,但似乎是某种会话限制,可能与交易相关。