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 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组