【发布时间】:2020-08-18 19:17:55
【问题描述】:
我使用下面的代码来获取 TABLE_ONE 与 TABLE_TWO 相比存在的额外项目 ID(来源 Store result of minus query ( list of varchars) in a variable in Oracle PL/SQL)
DECLARE
l_missing_id_list SYS.ODCINUMBERLIST;
BEGIN
SELECT project_id
BULK COLLECT INTO l_missing_id_list
FROM
(
SELECT t1.project_id FROM table_one t1
MINUS
SELECT t2.project_id FROM table_two t2 );
FORALL i IN l_missing_id_list.FIRST..l_missing_id_list.LAST
INSERT INTO table_two VALUES ( l_missing_id_list(i) );
COMMIT;
-- Values are now inserted and you have the list of IDs in l_missing_id_list to add to your email.
END;
现在我想将相应的项目名称也添加到第二个表中。与 TABLE_TWO 相比, TABLE_ONE 中存在的任何额外 project_id 都应与相应的 Project Names 一起插入 TABLE_TWO 中。怎么做?请注意,我需要将减号查询结果存储在一个变量中,因为我将对结果执行多个步骤。
【问题讨论】:
-
为什么要使用 PL/SQL?您可以编写一个查询来立即完成工作。
-
@GMB 如果与 TABLE_TWO 相比,TABLE_ONE 中存在额外的 Project_Ids,我需要执行 2 个步骤:1. 发送一封电子邮件,其中包含额外的 Project_Ids 列表和表格格式的相应 project_names,以及 2. 插入这些额外的 Project_ids 和相应的 project_names 到 TABLE_TWO 中(问题:stackoverflow.com/questions/63341473/…)
标签: sql oracle plsql sql-insert