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 を外部キーとして持つ別のテーブルに 2 回目の INSERT を実行したいと考えています。したがって、作成したばかりのすべての order_id と、一致する SOURCE からのデータを追加する必要があります。
INSERT INTO ORDER_COMPLETION(order_id, completion_dt)
SELECT ????, completion_dt
FROM ORDER_COMPLETION@SOURCE
作成されたばかりの order_id と、ソース データベースからプルする必要があるデータを含むものとがどのように一致するかを追跡するにはどうすればよいですか?
一時テーブルの作成を検討しましたが、プロシージャで作成することはできません。
その他の情報: 作成中の C# アプリからこの手順を呼び出します。