在 PL SQL 中,我正在编写一个使用 DB 链接的存储过程:
CREATE OR REPLACE PROCEDURE Order_Migration(us_id IN NUMBER, date_id in DATE)
as
begin
INSERT INTO ORDERS(order_id, company_id)
SELECT ORDER_ID_SEQ.nextval, COMPANY_ID
FROM ORDERS@SOURCE
WHERE USER_ID = us_id AND DUE_DATE = date_ID;
end;
它接受某个用户在某一天完成的所有订单,并将它们插入新数据库中。它调用一个序列来确保订单上没有重复的 PK,并且运行良好。
但是,我希望使用相同的过程对另一个具有 order_id 作为外键的表执行第二次 INSERT。所以我需要添加所有刚刚创建的 order_id,以及来自 SOURCE 的匹配数据:
INSERT INTO ORDER_COMPLETION(order_id, completion_dt)
SELECT ????, completion_dt
FROM ORDER_COMPLETION@SOURCE
如何跟踪刚刚创建的哪个 order_id 与我需要从源数据库中提取其数据的那个相匹配?
我考虑制作一个临时表,但您不能在过程中创建它们。
其他信息:我将从我正在编写的 C# 应用程序中调用此过程