我得到了两个表: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
中的行主键
我只想在这些列匹配的情况下进行插入,否则会引发错误。
知道我该怎么做吗?
那么您想在两个命名表中都存在的一些(第三个?(表中插入值吗?您可以使用SQL INSERT语句,使用INTERSECT运算符来标识匹配的行。
insert into whatever
select VOORNAAM, ACHTERNAAM, GESLACHT, GEBOORTEDATUM, EMAIL
from AANVR_OMZETTEN
intersect
select NAAM, ACHTERNAAM, GESLACHT, GEBOORTEDATUM, EMAIL
from KLANT
;
这可能不是一个完整的解决方案(例如,它忽略了主键的问题(。但你的问题并没有提供任何线索,说明你想如何处理这些事情。如果您需要进一步的帮助,请澄清您的问题。
-
-创建一个只显示公共列的类型
--为表格的弹出这些类型表格的数组
--用一个循环迭代,例如KLANT
--foreach行检查如果它存在于AANVR_ OMZETTEN表数组中
--如果不是;插入如果是接下来继续。
https://www.tutorialspoint.com/plsql/plsql_arrays.htm