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

关于动态游标
  楼主是新手 求各位大大指教,今天写了段代码被人说了,但是我不知道怎么错了。求指教

   定义了一个ref 形式的游标 , 因为要取的信息条件多差不多 我就用了动态SQl 

   str_:= 'select stu_num from student where  stu_no =:stu_no_';
   open get_num_ for str using stu_no;
   str_where:=' and 1=1 ';
   open get_num_  for str_||str_where;
   str_where:=' and 12=12 ';
   open get_num_  for str_||str_where;
  ·····
  ·····
 大概意思就是这样了不断的改变where 语句然后再次打开游标取值,他让我每个open 后面都要加一个close语句,个人感觉加上很多余。 不知道是不是应该加上。 这样编译和运行都不会出错。但是不知道是不是应该加上更好。求大大指教。PS:我问他为什么 他也说不出个所以然来。
PPS: 菜鸟第一次发帖 求解决
 
  
      
SQL ref?curcor

------解决方案--------------------

因为cursor资源是有限的,如果不关闭游标,一直占用cursor资源。。

另外也不建议用open...fetch...close这种写法,
直接用for 这种打开游标的写法。