在执行一个存储过程的时候,出现ORA-01000: maximum open cursors exceeded错误,请大家指教 存储过程倒是不复杂,就是首先用for u in(select...)的方式打开一个游标,然后在这个游标里还有一个循环以处理这个游标中的内容,整个存储过程就是这样,在开发服务器上,运行正常,但系统上到实际环境中,一执行这个存储过程就出现标题所说的异常,请教大家这是怎么回事 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用for in打开的游标是默认自动关闭的呀,不需要显示的关闭 主要原因可能就是因为你循环中打开了游标然后没有关闭它,导致游标越开越多,超过数据库允许的最大数。有2种解决方案1:及时关闭游标(推荐) 2在initSID.ora文件中加上:open_cursors = n 即可(n至少大于缺省值64) 如何关闭一个用for in 打开的游标? FOR IN 的游标确实是不用显示的打开或者关闭的~~还有一种可能是你程序的问题,游标出了错,但是却没有关闭,建议检查一下程序。然后再查一下这个select * from v$open_cursors 应该是程序中某些地方有问题,如果只是用的for in循环的话,是不用关闭游标的。 知道了,大概的问题应该是整个应用系统导致的,而不是我说的那个存储过程的问题,存储过程是没有问题的,只是正好通过它表现了出来,后来重启了web服务器,倒是好了,谢谢大家! SQL中子查询返回多行,如何解决 初学都基本常识问题请教 查询大于和小于之间的数据 为什么从表中查询字段不为空的数据查不到记录呢? oracle的to_number()有字母报错怎么解决? ###### 突然升星了,嘿嘿 先散200分再说,快进来接分吧 ###### 菜 菜的问题, 一个简单存储过程的问题 pl sql后台程序from关键字后怎样用变量代替表名 一个简单的连接,为什么出错呢? oracle取数据问题 根据SID 查不到 sql_text
有2种解决方案1:及时关闭游标(推荐)
2在initSID.ora文件中加上:open_cursors = n 即可(n至少大于缺省值64)
还有一种可能是你程序的问题,游标出了错,但是却没有关闭,建议检查一下程序。
然后再查一下这个
select * from v$open_cursors