SQL与ORACLE中存储过程调用存储过程返回的结果集插入到临时表写法

存储过程A1 调用 存储过程B1返回结果

最精简写法:

--存储过程A1中创建一个表去接收B1的结果
create table #tb(....)
insert into #tb
    exec B1 '...'

--比如像下面这样的写法:
INSERT INTO #ChargePrice_Result    
EXEC SP_CalcChargePrice @Way, @Amount, @Kind, @Year, @Hours   

--注:SP_CalcChargePrice存储过程执行后返回的结果集就插入到了#ChargePrice_Result临时表中

上述SQL实现思路参考:https://bbs.csdn.net/topics/390258633

ORACLE实现上述操作的方法

        DECLARE
            v_temp TT_CHARGEPRICE_RESULT%ROWTYPE;
            cv_ins SYS_REFCURSOR;
         
         BEGIN
            SP_CalcChargePrice(v_Way,  v_Amount,  v_Kind, v_Year,  v_Hours,  cv_ins);
            LOOP
               FETCH cv_ins INTO v_temp;
               EXIT WHEN cv_ins%NOTFOUND;
               INSERT INTO tt_ChargePrice_Result VALUES v_temp;
            END LOOP;
            CLOSE cv_ins;

 

posted @ 2022-10-04 00:15  IT情深  阅读(129)  评论(0编辑  收藏  举报