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 有关。
我正在使用 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 有关。