我正在使用c#和Oracle提供程序,并试图使用executeNonQuery()方法一次插入几行。
但是查询永远不会结束,应用程序就在此时挂起。
我已经在SqlDeveloper工具上测试了相同的查询。
有人能告诉我OracleDotnetProvide是否支持插入所有语句吗?或者,如果有什么方法来检查执行过程中出了什么问题?
以下是查询:
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;
}
}
}
}
发布于 2016-03-28 15:41:29
找到了!
我使用的是SqlDeveloper,连接到相同的凭据、相同的数据库等。一旦我断开了与SqlDeveloper的连接,我的查询(在visual中)就会正常运行。
我不知道确切的解释,但这似乎是某种会话限制,可能与事务有关。
https://stackoverflow.com/questions/36265145
复制相似问题