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 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)