Oracle
 sql >> Base de données >  >> RDS >> Oracle

Erreur d'instruction Oracle MERGE (ORA-30926)

La première réponse (et la plus évidente) consiste à nettoyer les données afin d'éviter les doublons. Il semble probable que l'exemple de données que vous avez fourni soit le résultat d'un bogue.

Quant à la merge déclaration, si les données sont en fait purement dupliquées, vous pouvez simplement utiliser distinct :

MERGE INTO maintable pr
USING      (SELECT DISTINCT contract,
                            membertype,
                            address1,
                            city,
                            state,
                            zipcode,
                            countrycode
            FROM   incrementaltable pra
            WHERE  pra.membertype = 'Parent')
ON         (pr.contract = pra.contract)
WHEN MATCHED THEN
   UPDATE SET pr.address1 = pra.address1,
              pr.city = pra.city,
              pr.state = pra.sate,
              pr.zipcode = pra.zipcode,
              pr.countrycode = pra.countrycode
      WHERE      address1 IS NULL AND pr.membertype <> 'Parent'