日期:2014-05-17  浏览次数:20869 次

打开游标树过多的问题
我是使用asp.net的很多返回DataSet的程序调用oracle的存储过程  
很多存储过程是这样写的
  create....
   
)as
    begin
        open   游标名   for
        select   *   from   A   where   ID=89;


      end...;

不知道这样写对不对,程序也没报错,也可以执行出结果,但是频繁的刷新网页后提示打开的游标过多,我这样写还需要关闭吗,能否详细讲解一下,谢谢
还有就是asp.net的   OracleDataReader   如何调用返回一条记录集的存储过程   谢谢   那位能帮帮忙,万分感激!!

------解决方案--------------------
存储过程中要clost 游标的
------解决方案--------------------
一定要注意close
------解决方案--------------------
不如直接用隐式游标的 自动关闭的
------解决方案--------------------
那样的过程就是只能那样写的,所以不存在在过程中自动CLOSE的问题。
要解决,要么就是设置可以打开的cursor数目多一些(在OEM中配置),要么就是对SESSION的时间进行一些限制(SESSION完成之后,CURSOR是自动关闭的),以保证一段之间之内打开的CURSOR不会太多。

------解决方案--------------------
open 游标名必须对应close游标.

------解决方案--------------------
建议使用
FOR 游标变量 IN 游标名 LOOP

...
END LOOP ;
这样可以自行关闭游标。