miércoles, 23 de mayo de 2007

Sentencia Merge en Oracle

La sentencia merge nos permite realizar una actualización de una tabla, de tal modo que si no existe alguno de los registros a actualizar realiza también la inserción de esos nuevos registros. La sintaxis es la siguiente:
MERGE INTO tabla
USING (otra_tabla, vista.....)
ON ( condiciñon de union)
WHEN MATCHED THEN
UPDATE SET
columna1tabla = un valor,
columna2tabla = otro valor
WHEN NOT MATCHED THEN
INSERT (columna1tabla,columna2tabla)
VALUES (unvalor, otrovalor)

Un ejemplo en el que tenemos dos tablas prueba1 y prueba2, y queremos realizar un merge de prueba1 en prueba2. Esto significa que los valores de prueba2 van a ser actualizados con los valores de prueba1, y en el
caso de que no exista el registro se insertan en prueba2.

MERGE INTO prueba2
USING (prueba1)
ON (prueba2.id1 = prueba1.id1)
WHEN MATCHED THEN
UPDATE SET
prueba2.id2 = prueba1.id2
WHEN NOT MATCHED THEN
INSERT (id1,id2)
VALUES (prueba1.id1, prueba1.id2)

No hay comentarios: