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

存储过程里这样的循环读取不用游标还能用什么?!
各位大虾:
      我需要在一张表里把用户信息读出来,然后根据用户号分别计算他们的酬金。酬金计算已经在一个函数(f_count_bonus)实现了。我的存储过程是这么处理的:
        open   mc   for
      'select   user_id   from   t_user   where   state   in   (3,4) ';
    loop
        fetch   mc   into   v_uid;
    exit   when   mc%NOTFOUND;
        bonus:=bonus+f_count_bonus(v_uid);
    end   loop;
    close   mc;

我这样通过游标循环来达到目的,这样效率不是很高,特别在读出纪录很多的情况下。
请问:这里不用游标还能用什么来提高效率??

先谢了

------解决方案--------------------
update t_user set salary = salary + f_count_bonus(user_id ) where state in (3,4);

------解决方案--------------------
这个?

select sum(f_count_bonus(user_id ))
into xxx
from t_user
where state in (3,4);