Возврат строк данных из вызванной хранимой процедуры с использованием курсоров

Я пытаюсь написать хранимую процедуру Oracle, которая вызовет пять (5) вложенных хранимых процедур для всех Билла (bill_id_tab) в конкретном наборе результатов. Я использую FOR цикл, и единственный набор возвращаемых данных это самый последний Билл. Я предполагаю, что он записывает данные ПОСЛЕ FOR..LOOP завершено, а не во время. Я не уверен, как заставить его записывать каждый набор результатов во время обработки.

Вот мой код:

BEGIN
  DECLARE
     v_bill_id           CHAR(12);
     v_batch_nbr         NUMBER(10);

  --define cursor
  cursor bill_id_tab is (SELECT BILL_ID
                         FROM CI_BILL_ROUTING
                         WHERE BATCH_NBR = (SELECT MAX(BATCH_NBR)
                                            FROM CI_BILL_ROUTING
                                            WHERE BATCH_CD = 'DGRTPOST')
                           AND BATCH_CD = 'DGRTPOST')
                         ORDER BY BILL_ID;
BEGIN
    /******************************************************************************
      get bill_id's for all bills generated in the max Batch_nbr.  
      Batch_cd will be used to seperate
     ******************************************************************************/

BEGIN
    FOR each BILL_ID IN bill_id_tab LOOP
      BEGIN
        RPTUSER.CM_DGBILLPB_HP2(p_info_cursor1, NULL, rec.BILL_ID, NULL, NULL);
        RPTUSER.CM_DGBILLPR_HP(p_info_cursor2, rec.BILL_ID);
        RPTUSER.CM_DGBILLMS_HP(p_info_cursor3, rec.BILL_ID, 'C');
        RPTUSER.CM_DGBILLCG_HP(p_info_cursor4, rec.BILL_ID);
        RPTUSER.CM_DGBILLMR_HP(p_info_cursor5, rec.BILL_ID);
      END;
    END LOOP;
END;
END;

Счета, для которых я ожидаю увидеть данные:

819244555299
819246299764
819248391148
951891843093
951896713417
951897314849

Единственный набор результатов, который возвращается - Bill_ID - 951897314849,

Любое руководство будет оценено.

Заранее спасибо.

0 ответов

Другие вопросы по тегам