My script below will use two external tables to fill two separate tables, but am not sure if I am using my cursor the correct way. If I am using it in a incorrect way please help me to correct the mistake.
// update
It’s for an oracle database (ORACLE SQL)
DECLARE
L_volg_no1 NUMBER;
L_volg_no2 NUMBER;
CURSOR c_gip IS
SELECT
artikelnummer,
ingangsdatum,
grossiersprijs
FROM dc_RMSSID_GIP;
CURSOR c_gip_promo IS
SELECT
artikelnummer,
ingangsdatum
promo_nummer,
actie_grossiersprijs
FROM dc_RMSSID_GIPPromo;
BEGIN
FOR r_sid1 in c_gip
LOOP
SELECT daa_imp_rms_gip_seq.NEXTVAL INTO L_volg_no1 FROM DUAL;
INSERT
INTO daa_imp_rms_grossiersprijs (
volg_nr
,importtijdstip
,importstatus
,artikelnummer
,ingangsdatum
,grossiersprijs
)
VALUES (
L_volg_no1,
SYSDATE,
'N',
r_sid1.artikelnummer,
r_sid1.ingangsdatum,
r_sid1.grossiersprijs
);
END LOOP;
FOR r_sid2 in c_gip_promo
LOOP
SELECT daa_imp_rms_prm_gip_seq.NEXTVAL INTO L_volg_no2 FROM DUAL;
INSERT
INTO daa_imp_rms_prm_grossiersprijs (
volg_nr
,importtijdstip
,importstatus
,artikelnummer
,ingangsdatum
,promo_nummer
,grossiersprijs
)
VALUES (
L_volg_no2,
SYSDATE,
'N',
r_sid2.artikelnummer,
r_sid2.ingangsdatum,
r_sid2.promo_nummer,
r_sid2.grossiersprijs
);
END LOOP;
COMMIT;
END;
The syntax looks fairly good but trust your testing more than my eyes 🙂
But more importantly; why use cursors for this task? Two insert statements would do the same job and being set-based (rather than procedural) code is likely to perform better in most RDBMSes.