使用游标从调用的存储过程返回数据行

时间:2015-08-11 21:00:02

标签: sql oracle stored-procedures procedures cursors

我正在尝试编写一个Oracle存储过程,该过程将为特定结果集中的所有Bill(bill_id_tab)调用五(5)个子存储过程。我正在使用FOR循环,返回的唯一数据集是最后一个Bill。我假设它是在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 个答案:

没有答案