我正在尝试编写一个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
。
任何指导都将不胜感激。
提前致谢。