martes, 8 de abril de 2014

Sentencia MERGE en Oracle

Lo que permite la sentencia SQL MERGE dependiendo de una condición lógica, actualizar
registros (UPDATE) cuando la condición se cumple, o insertar registros (INSERT) cuando dicha condición no se cumple.

Las ventajas de la sentencia SQL MERGE son claras:
  • Permite con una misma sentencia realizar un UPDATE si el registro existe, o un INSERT si se trata de un nuevo registro.
  • La sentencia puede paralelizarse de forma transparente.
  • Se evita la necesidad de realizar actualizaciones múltiples.
  • Es especialmente útil para realizar operaciones en masa (Por ejemplo en aplicaciones data warehousing).
  • El rendimiento de la base de datos mejora ya que se necesitan menos sentencias SQL para realizar las mismas operaciones, también se necesitan menos accesos a las tablas fuente.
A continuación vamos a ver con un caso práctico la aplicación de MERGE:
  • Estructura de la tabla HR.EMPLOYEES
          EMPLOYEE_ID NUMBER PRIMARY KEY
          FIRST_NAME VARCHAR2(30)
          LAST_NAME VARCHAR2(30)
          HIRE_DATE DATE
  • Estructura de la tabla HR.NEW_EMPLOYEES
          EMPLOYEE_ID NUMBER PRIMARY KEY
          NAME VARCHAR2(65)
  • Entonces si queremos insertar datos en la tabla HR.NEW_EMPLOYEES con datos provenientes de la tabla HR.EMPLOYEES, utilizando la sentencia MERGE, sería de la siguiente forma:
          MERGE INTO HR.NEW_EMPLOYEES C
          USING HR.EMPLOYEE E
          ON (C.EMPLOYEE_ID=E.EMPLOYEE_ID)
          WHEN MATCHED THEN 
          UPDATE SET
          C.NAME=E.FIRST_NAME||','||E.LAST_NAME
          WHEN NOT MATCHED THEN
          INSERT VALUES (E.EMPLOYEE_ID,E.FIRST_NAME||','||E.LAST_NAME)


No hay comentarios:

Publicar un comentario