两张表,一张用于记录每个项目所获得的奖金总额度,一张用于记录各个项目参与人员的等级及可获得奖金额度,现在新建一张表,需要将每个项目的奖金按参与人员的级别高低进行分配插入,按参与人员级别高低进行逐级分配,尾数分配给最后一个人,写了个游标可是总是不能获得想要的结果,希望好心人能帮下忙
DECLARE
   lading_bill_wt_temp   NUMBER;
   lot_number_wt_temp    NUMBER;
   temp                  NUMBER;
   count1                NUMBER;
   lot_number_temp       VARCHAR2 (30);
   weight_temp           NUMBER;
   scrq_temp             VARCHAR2 (30);
   rownum_temp           NUMBER;   CURSOR bill_rec
   IS
      SELECT lading_bill_no, a.item_code, lading_bill_wt,       //每个项目的奖金总额
             TO_NUMBER (b.invent_item_id) inventory_item_id,
             a.big_lading_bill_no
        FROM sgl.tlebl01 a, sgs.tsosoa11 b
       WHERE a.big_lading_bill_no = 'D99291'
         AND a.item_code = b.pc;
BEGIN
   FOR rec IN bill_rec
   LOOP
      
       for rec1 in ( SELECT   weight, lot_number, scrq
                  FROM xc_lot_newsgp
                 WHERE inventory_item_id = rec.inventory_item_id   //每个项目的参与人员级别可获奖金额度
              ORDER BY scrq)
      loop
      IF rec.lading_bill_wt<rec1.weight   //当项目奖总额小于该项目最高级别人员可获得的奖金额时
      THEN
         INSERT INTO sgl.tlebl05_inter2
                     (lading_bill_no, big_lading_bill_no,
                      pono_no, bal_wt
                     )
              VALUES (rec.lading_bill_no, rec.big_lading_bill_no,
                      rec1.lot_number, rec.lading_bill_wt
                     );
      ELSIF rec.lading_bill_wt=rec1.weight//当项目奖总额等于该项目最高级别人员可获得的奖金额时
      THEN
         INSERT INTO sgl.tlebl05_inter2
                     (lading_bill_no, big_lading_bill_no,
                      pono_no, bal_wt
                     )
              VALUES (rec.lading_bill_no, rec.big_lading_bill_no,
                      rec1.lot_number, rec.lading_bill_wt
                     );
      ELSIF rec.lading_bill_wt>rec1.weight//当项目奖总额大于该项目最高级别人员可获得的奖金额时
      THEN
         if rec.lading_bill_wt-rec1.weight>0
         then INSERT INTO sgl.tlebl05_inter2
                     (lading_bill_no, big_lading_bill_no,
                      pono_no, bal_wt
                     )
              VALUES (rec.lading_bill_no, rec.big_lading_bill_no,
                      rec1.lot_number, rec1.weight
                     );
         end if;
         END IF;   END LOOP;
   end loop;   COMMIT;
END;