De foutmelding lijkt duidelijk genoeg:
Je linkt inderdaad naar een andere vraag waarin wordt uitgelegd dat dit een implementatiebeperking is. PL/SQL staat ons niet toe om FORALL-statements te gebruiken voor databasekoppelingen en dat is het dan ook.
Gelukkig hoef je geen bulkcollect en FORALL in je code te gebruiken. Een eenvoudige INSERT INTO .... SELECT-instructie zou je gelijk moeten zien:
INSERT INTO AUDITION_DETAIL@FMATLINK
SELECT A.PARTY_SITE_NUMBER FMAT_FMATID, B.ZADDRESSFMATID F4F_FMATID,
C.ADDRESS1 FMAT_VALUE, B.STREET F4F_VALUE , 'ADDRESS1'
FROM APPS.HZ_PARTY_SITES@FMATLINK A , f4f_corporateaccount B , APPS.HZ_LOCATIONS@FMATLINK C
WHERE 1=1
AND B.ROLECODETEXT = 'Site Account'
AND A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
AND A.STATUS = 'A'
UNION ALL
------------------------------------------------------Address2-----------------------------------------------------------------------------
SELECT A.PARTY_SITE_NUMBER FMAT_FMATID, B.ZADDRESSFMATID F4F_FMATID,
C.ADDRESS2 FMAT_VALUE, B.addressline1 F4F_VALUE , 'ADDRESS2'
FROM APPS.HZ_PARTY_SITES@FMATLINK A , f4f_corporateaccount B , APPS.HZ_LOCATIONS@FMATLINK C
WHERE 1=1
AND B.ROLECODETEXT = 'Site Account'
AND A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
AND A.STATUS = 'A'
Je code gebruikt niet de expliciete ANSI 92 join-syntaxis en je hebt de code verpulverd, zodat het moeilijk te lezen is. Het is daarom gemakkelijk over het hoofd te zien dat u geen lidmaatschapsvoorwaarde heeft geschreven voor APPS.HZ_LOCATIONS@FMATLINK C
. Beide subquery's produceren dus een Cartesiaans product voor alle records in C
. Dit wil je waarschijnlijk niet.
SELECT A.PARTY_SITE_NUMBER as FMAT_FMATID
, B.ZADDRESSFMATID as F4F_FMATID
, C.ADDRESS2 as FMAT_VALUE
, B.addressline1 as F4F_VALUE
, 'ADDRESS2'
FROM APPS.HZ_PARTY_SITES@FMATLINK A
inner join f4f_corporateaccount B on A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
inner join APPS.HZ_LOCATIONS@FMATLINK C on ** something goes here **
WHERE B.ROLECODETEXT = 'Site Account'
AND A.STATUS = 'A'
Gemakkelijker te begrijpen, gemakkelijk om de ontbrekende join te herkennen. Leesbaarheid is een functie.