----------------------------------------------------------------------------------------------
begin
v_company_id:=company_id;for rec in (
select count(*) icount,distributer_id  from cost_term aa where aa.distributer_id in
( select distributer_id  from cost_distributer where node_id='20' and distributer_type='0') and distributer_id<>'1'
group by aa.distributer_id  ) loopif  v_count_1<=30-rec.icount then 
v_distributer_id:=rec.distributer_id;else
null;
return '请新增积分;
--select max(distributer_id) into v_distributer_id from distributer;
end if;
end loop;---------------------------------------------------------------------------------------------
select count(*) icount,distributer_id  from ecc_imr_term aa where aa.distributer_id in
( select distributer_id  from ecc_distributer where node_id='20' and distributer_type='0') and distributer_id<>'1'
group by aa.distributer_id 得出的结果30  5775556
30  5775557
23  5773336
19  5733335上面那游标好像LOOP循环不起来???

解决方案 »

  1.   

    如果select语句能查出数据的话进循环应该没有问题
    在循环里头用dbms_output.put_line();打印点东西
    看看是哪步出的错
    或者用plsql developer直接调试看看哪行出的错
      

  2.   

    直接就去 else 那里去了,然后就结束了!
    select 是肯定有数据的
      

  3.   

    对啊循环肯定是进了说明你第一个
    if条件就不符合啊所以进else了
    建议你把数据都打出来看看比对比对
      

  4.   

    select 语句的结果
    30  5775556 
    30  5775557 
    23  5773336 
    19  5733335 其实我是一行一行比对,if条件前三行都是不满足的,只有最后一行满足,想通过循环取出最后一行的值!
    不知道通过这方法能不能实现
      

  5.   

    关于for in loop我是一只在糊涂 受教大家