存储过程,插入表时是否可以同时从游标和另一张表取数据? 已添加自己写的在下面。

W表为基础表 M表为报表层表,两张表字段几乎一样,只有两列代理键,TIME_WID 和COMPANY_WID
要关联另外两张表,日期维表和 公司维表,可根据W表的机构和时间检索出日期和公司的代码,
现在存储过程要实现的功能就是W层的表到M层表的同步,再转下代理键 就Ok
起初我想把机构和公司设为参数,写进游标,再从游标取值 人两个参数,再同W表的其他参数插入到M表
但不清楚如何 把游标的参数 和W表的字段同时插入进M表里?
由于之前没有写存储过程的经验,这次上面要求的又挺急,请各位帮忙解决这个问题,
多谢,多谢!!

CREATE OR REPLACE PROCEDURE TP_EXAM

IS
I_SJ NUMBER;
I_JG NUMBER;
V_SDATE NUMBER;
V_UPDA NUMBER;

--DELETE FROM RPT_YW_YB10_INTER_INSUR_RANK_F WHERE COMPANY_WID = '111';
TYPE Cursors IS REF CURSOR;
c_CUR Cursors;

OPEN c_CUR FOR
SELECT TIME_WID,
COMPANY_WID
FROM DW_YW_YB10_INTER_INSUR_RANK_F RF
LEFT JOIN W_COMPANY_D COMY
ON (RF.JG = COMY.COMPANY_CODE)
LEFT JOIN W_TIME_D T
ON (RF.SJ = T.DAY_DT);
--取出时间和机构的代理键
LOOP
FETCH c_CUR
INTO I_SJ,
I_JG,

 BEGIN
   INSERT INTO RPT_YW_YB10_INTER_INSUR_RANK_F VALUES (I_SJ,I_JG);

SELECT
(index_name,
ditch_name,
insurance_name,
period,
ytd_value,
batch_id,
created_by,
updated_by,
combination_record,
src_sys,
etld_at)
INTO RPT_YW_YB10_INTER_INSUR_RANK_F
FROM DW_YW_YB10_INTER_INSUR_RANK_F
WHERE updated_at = V_UPDA -1;
EXIT WHEN c_CUR%NOTFOUND;
END LOOP;
CLOSE c_CUR;
SELECT SYSDATE INTO V_SDATE FROM DUAL;
SELECT updated_at INTO V_UPDA;

n:=1;
WHILE
INSERT INTO RPT_YW_YB10_INTER_INSUR_RANK_F
SELECT * FROM RPT_YW_YB10_INTER_INSUR_RANK_F where rownum between n and n+1000;

if Sql%Rowcount <1000 then
commit;
break;
end if;
n:=n+1000;
COMMIT;

END;

2个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐