我正在使用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;
}
}
}
}
答案 0 :(得分:0)
发现它!
我使用的是Sql Developer,使用相同的凭据,相同的数据库等连接。 一旦我从SqlDeveloper断开连接,我的查询(在visual studio debug)运行正常。
我不知道确切的解释,但似乎是某种会话限制,可能与交易相关。