我是使用asp.net的很多返回DataSet的程序调用oracle的存储过程 
很多存储过程是这样写的
 create....
  
)as
  begin
    open 游标名 for
    select * from A where ID=89;
   end...;不知道这样写对不对,程序也没报错,也可以执行出结果,但是频繁的刷新网页后提示打开的游标过多,我这样写还需要关闭吗,能否详细讲解一下,谢谢
还有就是asp.net的 OracleDataReader 如何调用返回一条记录集的存储过程 谢谢 那位能帮帮忙,万分感激!!

解决方案 »

  1.   

    存储过程中要clost 游标的
      

  2.   

    create....
      
    )as
      begin
        open 游标名 for
        select * from A where ID=89;    close 游标名;
       end...;
    是这样关闭吗,我这样关闭有时候不知道怎么回是会报错啊,提示没有执行句柄
      

  3.   

    那样的过程就是只能那样写的,所以不存在在过程中自动CLOSE的问题。
    要解决,要么就是设置可以打开的cursor数目多一些(在OEM中配置),要么就是对SESSION的时间进行一些限制(SESSION完成之后,CURSOR是自动关闭的),以保证一段之间之内打开的CURSOR不会太多。
      

  4.   

    open 游标名必须对应close游标.
      

  5.   

    建议使用
    FOR 游标变量 IN 游标名 LOOP...
    END LOOP ;
    这样可以自行关闭游标。