首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01000:最大打开游标超出错误

ORA-01000:最大打开游标超出错误
EN

Stack Overflow用户
提问于 2017-03-13 12:06:22
回答 1查看 2K关注 0票数 0

我有以下代码:

代码语言:javascript
复制
 using (System.Data.OracleClient.OracleConnection dataConn = new System.Data.OracleClient.OracleConnection(_connectionString))
            {
                using (System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand())
                {
                    cmd.Connection = dataConn;
                    cmd.CommandText = "DELETE FROM Employees WHERE LOCATIONID=  :LOCATIONID";
                    cmd.Parameters.AddWithValue(":LOCATIONID", locationId);
                    dataConn.Open();
                    retVal += cmd.ExecuteNonQuery();
                    dataConn.Close();
                }
                using (System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand())
                {
                    cmd.Connection = dataConn;
                    cmd.CommandText = string.Format("DELETE FROM Locations WHERE LocationId = :LOCATIONID";
                    cmd.Parameters.AddWithValue(":LOCATIONID", locationId);
                    dataConn.Open();
                    retVal += cmd.ExecuteNonQuery();
                    dataConn.Close();
                }
            }

只是FYI

  • 我在一个循环中调用上面的块,比如50次迭代。
  • 在每次迭代中,我都传递一个新的位置In。对于每个迭代,-The第一次查询可能会删除avg上的500个记录,因为一个位置分配给500多名员工。

根据this链接:,我认为我做的事情是正确的,谁能指出为什么我仍然得到或-01000:最大开放游标超过错误?任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-13 12:23:11

根据post中链接(ORA-01000: maximum open cursors exceeded in asp.net)中接受的答案,当您调用dataConn.Close()时,连接不是真正关闭的,而是在连接池中打开的。这是一种隐藏的优化,使打开其他连接更快,但当您超过Oracle的某些限制时,它可能会导致问题。我建议您研究限制连接池大小的方法--这取决于承载代码的是什么(IIS?还有别的吗?)。

您还可以将SQL更改为“从键位于IN的表中删除(值的...list.)”。这将消除打开50个逻辑连接的需要(谁知道有多少物理连接--潜在的大量连接)。

或者在dataConn.Open.dataConn.Close中执行循环--只对所有cmds使用相同的打开连接。

编辑:根据您使用的数据提供程序,连接池的大小可以从连接字符串中控制。有关示例,请参见https://msdn.microsoft.com/en-us/library/ms254502(v=vs.110).aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42763256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档