我有两个表:aanvr_omzetten
(请求)和klant
(客户)
表的结构:
AANVR_OMZETTEN
VOORNAAM ACHTERNAAM GESLACHT GEBOORTEDATUM EMAIL
A John M 07-01-1990 v1@gmail.com
B Jaxk V 01-04-1965 v2@gmail.com
KLANT
NAAM ACHTERNAAM GESLACHT GEBOORTEDATUM EMAIL NATION BANKNR STUDY
A John M 07-01-1990 v1@gmail.com DUTCH 12 YES
B Jack M 01-04-1965 v2@gmail.com DUTCH 15 YES
这是我的代码:
DECLARE
v_klantnummer number;
v_rekeningnummer number;
BEGIN
-- get klantnummer and rekeningid
BEGIN
select klantnummer, rekeningid into v_klantnummer, v_rekeningid from rekening where rekeningnummer = :P501_REKENINGNR and rekeningtype = 23;
EXCEPTION
when no_data_found then
raise_application_error(-20000, 'Rekeningnummer is onbekend');
END;
-- get the information of klant X with klantnummer v_klantnummer
for i in (select voornaam, achternaam, geslacht, geboortedatum, email, postcode, huisnummer, straat, plaats, nationaliteit, burgerservicenummer
from klant where klantnummer = v_klantnummer)
loop
-- compare with other table??
--
for i in (select voornaam, achternaam, geslacht, geboortedatum, email, postcode, huisnummer, straat, plaats, nationaliteit, burgerservicenummer
from aanvr_omzetten where aanvr_omzetten = :P501_aanvr_omzettennr)
-- both tables loaded but how can i compare them?
-- ONLY if the selected attributes match
INSERT etc.
我不需要比较所有列,只需比较aanvr_omzetten
中表中的那些列,因为表klant
具有所有这些列以及其他所有列。
KLANT
中行的主键:v_klantnummer
AANVR_OMZETTEN
中行的主键::P501_AANVR_OMZETTENNR
我只想在那些列匹配时进行插入,否则它会引发错误。
你知道我该怎么做吗?
答案 0 :(得分:1)
因此,您想插入两个命名表中都存在的某些(第三个)表值吗?您可以使用INSSECT运算符通过SQL INSERT语句来执行此操作,以标识匹配的行。
insert into whatever
select VOORNAAM, ACHTERNAAM, GESLACHT, GEBOORTEDATUM, EMAIL
from AANVR_OMZETTEN
intersect
select NAAM, ACHTERNAAM, GESLACHT, GEBOORTEDATUM, EMAIL
from KLANT
;
这可能不是一个完整的解决方案(例如,它忽略了主键的问题)。但是您的问题并未提供有关如何处理此类问题的任何线索。如果您需要进一步的帮助,请澄清您的问题。
答案 1 :(得分:0)
-创建一种仅显示常见列的类型
-将这些类型的表的数组弹出表的
-以一个循环进行循环,例如KLANT
-foreach行检查
如果它存在于AANVR_OMZETTEN表数组中。
- 如果不;
插入;
如是
接下来继续。