我有一個從3個不同的表中返回數據的存儲過程。每次我在我的代碼中調用該過程時,我都希望它將任何新數據插入到不同的表中(我知道重複數據不是最佳實踐,但在這種情況下是需要的)。如何將存儲過程中的行插入表中,如果它們不存在?
這是我到目前爲止有:
BEGIN
DECLARE
v_cc COMM_CUSTOMER%ROWTYPE;
CURSOR c1 is
SELECT d.customer_name, d.active, f.street, f.state, f.zip, t.amount_due, t.due_date
FROM tables t
INNER JOIN othertable on ect, ect
WHERE t.due_date < sysdate
c_row c1%rowtype;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO c_row;
EXIT WHEN c1%NOTFOUND;
MERGE INTO COMM_CUSTOMER cc
USING DUAL
on (cc.customer_name= v_cc.customer_name and
cc.active = v_cc.active and
cc.street = v_cc.street and
cc.amount_due = v_cc.amount_due)
when not matched then
insert values c_row;
COMMIT;
END LOOP;
CLOSE c1;
這編譯,但什麼都不做。
我一直在使用oracle一個星期左右,不知道有關遊標和整體沒有太多的經驗與SQL ...有人可以告訴我我做錯了/另一種方式做這個?謝謝!