存储过程倒是不复杂,就是首先用for u in(select...)的方式打开一个游标,然后在这个游标里还有一个循环以处理这个游标中的内容,整个存储过程就是这样,在开发服务器上,运行正常,但系统上到实际环境中,一执行这个存储过程就出现标题所说的异常,请教大家这是怎么回事

解决方案 »

  1.   

    用for in打开的游标是默认自动关闭的呀,不需要显示的关闭
      

  2.   

    主要原因可能就是因为你循环中打开了游标然后没有关闭它,导致游标越开越多,超过数据库允许的最大数。
    有2种解决方案1:及时关闭游标(推荐)
                          2在initSID.ora文件中加上:open_cursors = n  即可(n至少大于缺省值64)
      

  3.   

    如何关闭一个用for in 打开的游标?
      

  4.   

    FOR IN 的游标确实是不用显示的打开或者关闭的~~
    还有一种可能是你程序的问题,游标出了错,但是却没有关闭,建议检查一下程序。
    然后再查一下这个
    select * from v$open_cursors
      

  5.   

    应该是程序中某些地方有问题,如果只是用的for in循环的话,是不用关闭游标的。
      

  6.   

    知道了,大概的问题应该是整个应用系统导致的,而不是我说的那个存储过程的问题,存储过程是没有问题的,只是正好通过它表现了出来,后来重启了web服务器,倒是好了,谢谢大家!