qq_35962975 2016-08-25 06:10 采纳率: 0%
浏览 1260

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

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条回答

  • dabocaiqq 2017-02-19 15:55
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题