PL/SQL 仅使用游标将数据从 2 table 检索到新的 table
PL/SQL ONLY using a cursor to retrieve data from 2 tables into a new table
你好我需要创建一个新的table来存储两个table的数据。然后我需要创建一个存储过程来将数据从两个 table 传输到新的。我将数据从第一个 table 传输到新的 table 没有问题,当我将数据从第二个 table 传输到新的 table 时出现问题。因为不是插入与其 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;
你好我需要创建一个新的table来存储两个table的数据。然后我需要创建一个存储过程来将数据从两个 table 传输到新的。我将数据从第一个 table 传输到新的 table 没有问题,当我将数据从第二个 table 传输到新的 table 时出现问题。因为不是插入与其 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;