eeee
Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO...
http://codigojavaoracle.com
Sentencia MERGE INTO (UPSERT)
Antes de esta sentencia "MERGE INTO",que vino implementada en Oracle 9, cuando se
quería insertar/actualizar datos en una tabla que no estaba vacía, teníamos que ir procesando
los registros y comprobar si estaba en la tabla antes derealizar un UPDATE o un INSERT, con
algún tipo de lenguaje procesual. Este tipo de sentencia permite actualizar registros (UPDATE)
cuando la condición se cumple o insertar registros (INSERT) cuandola condición no se
cumple. Eso si, no es recomendable en cargas masivas de datos! Esta sentencia tiene esta
sintaxis: MERGE INTO [tabla_destino] USING ([tabla o vista o consulta]) ON ([condiciónde existencia de registro]) WHEN MATCHED THEN [sentencia de actualización] WHEN
NOT MATCHED THEN [sentencia de inserción];
MERGE INTO RESTO res USING prueba_tmp pru ON (res.ID = pru.ID) WHENMATCHED THEN UPDATE SET res.DNI = pru.DNI, res.departamento =
pru.departamento WHEN NOT MATCHED THEN INSERT (ID, DNI, DEPARTAMENTO)
VALUES (pru.ID, pru.DNI, pru.DEPARTAMENTO)
He intentado meter máscondiciones en la clausula ON, pero no he podido y tampoco he visto
información al respecto. Esta sentencia tiene otras posibilidades: Sólo insert (NOT
MATCHED): MERGE INTO RESTO res USING prueba_tmppru ON (res.ID = pru.ID) WHEN
NOT MATCHED THEN INSERT (ID, DNI, DEPARTAMENTO) VALUES (pru.ID, pru.DNI,
pru.DEPARTAMENTO) Sólo update (MATCHED): MERGE INTO RESTO res USING
prueba_tmp pru ON (res.ID= pru.ID) WHEN MATCHED THEN UPDATE SET res.DNI =
pru.DNI, res.departamento = pru.departamento Con condiciones en el INSERT o el
UPDATE ( Las condiciones tienen que basarse en la tabla de la que serecoge los datos)
MERGE INTO RESTO RES USING PRUEBA_TMP PRU ON (RES.ID = PRU.ID) WHEN
MATCHED THEN UPDATE SET RES.DNI = PRU.DNI, RES.DEPARTAMENTO =
PRU.DEPARTAMENTO WHERE PRU.DEPARTAMENTO !=...
Regístrate para leer el documento completo.