Oracle Dotnet Provider 和 INSERT ALL 语句

Oracle Dotnet Provider and INSERT ALL statement

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

但是查询永远不会结束,此时应用挂起。

我已经在 SqlDeveloper 工具上测试了相同的查询。

谁能告诉我 OracleDotnetProvide 是否支持 INSERT ALL 语句? And/Or,有什么方法可以检查执行过程中出了什么问题吗?

这里是查询:

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;
                    }
                }
            }
        }

找到了!

我正在使用 Sql 开发人员,使用相同的凭据、相同的数据库等进行连接。 一旦我与 SqlDeveloper 断开连接,我的查询(在 visual studio 调试)运行 正确。

我不知道确切的解释,但这似乎是某种会话限制,可能与 t运行sactions 有关。