begin
  open c_billing_info;
  loop
    fetch c_billing_info
      into room_id,
           v_square,
           price,
           extra_price1,
           extra_price2,
           v_plan_count1,
           v_plan_count2,
           v_item_id,
           item_name,
           item_code,
           fee_type,
           v_room_type_id,
           v_compute_form,
           v_overdue_flag;
    exit when c_billing_info%notfound;
    
  dbms_output.put_line('房屋id:'||room_id);
    
  select b.previous_fee--在这里报错
      into previous_fee
      from t_pm_billing b
     where b.status != 2
       and  b.room_id = room_id; --往月欠交

解决方案 »

  1.   

    你是不是select b.previous_fee  from t_pm_billing b where b.status != 2 and b.room_id = room_id;
    查询出来有多个值!
      

  2.   


    --下面这个语句查出的结果超过一条
    SELECT B.PREVIOUS_FEE --在这里报错
      INTO PREVIOUS_FEE
      FROM T_PM_BILLING B
     WHERE B.STATUS != 2
       AND B.ROOM_ID = ROOM_ID --往月欠交
       AND ROWNUM = 1  --增加这个屏蔽错误,但是复不复合你的逻辑就不知道了
       ; 
      

  3.   

    previous_fee
    这个里面是什么啊?是不是定义错了???
      

  4.   

    查询出来只有一条记录,但是那个select ...into...where b.room_id = room_id; room_id是从游标中循环出来的
      

  5.   

    把变量名和表中的字段名区分开
    b.room_id = room_id
    变量名改一下
    l_room_id 
    再试一下
    这个错误很常见。