【发布时间】:2021-04-05 17:06:28
【问题描述】:
您好,我需要创建一个新表来存储两个表的数据。然后我需要创建一个存储过程来将两个表中的数据传输到新表中。我将数据从第一个表传输到新表没有问题,当我将数据从第二个表传输到新表时出现问题。因为它不是被插入到与其 pubid 匹配的行中,而是被插入到新行中。
【问题讨论】:
您好,我需要创建一个新表来存储两个表的数据。然后我需要创建一个存储过程来将两个表中的数据传输到新表中。我将数据从第一个表传输到新表没有问题,当我将数据从第二个表传输到新表时出现问题。因为它不是被插入到与其 pubid 匹配的行中,而是被插入到新行中。
【问题讨论】:
我会说,你已经很接近了。
在第二个循环中,您不应该 INSERT,而是 UPDATE 现有行。
你声明的光标:
CURSOR cur_proceedings IS
SELECT pubid, year FROM proceedings;
你在这里使用过它:
OPEN cur_proceedings;
LOOP
FETCH cur_proceedings INTO v_proceedings;
EXIT WHEN cur_proceedings%NOTFOUND;
-- Instead of INSERT:
-- INSERT INTO publication_master(proceeding_year)
-- VALUES(v_proceedings.year);
-- use UPDATE:
update publication_master m set
m.proceeding_year = v_proceedings.year
where m.pubid = v_proceedings.pubid;
END LOOP;
CLOSE cur_proceedings;
【讨论】:
v_proceedings(即游标变量),而不是cur_proceedings。固定。