sql >> Base de Datos >  >> RDS >> Oracle

Error de declaración MERGE de Oracle (ORA-30926)

La primera (y más obvia) respuesta es limpiar los datos para que no tenga duplicados. Parece probable que los datos de muestra que proporcionó sean el resultado de un error.

En cuanto a merge declaración, si los datos en realidad están puramente duplicados, puede usar 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'