jueves, 8 de diciembre de 2016

DML EN PL-SQL


Usted manipular datos en la base de datos mediante el uso de comandos DML. Puede emitir comandos DML tales como INSERT, UPDATE, DELETE y MERGE sin restricciones en PL / SQL. Los bloqueos de fila (y bloqueos de tabla) se liberan mediante la inclusión de las declaraciones de confirmar o deshacer en el código PL / SQL.
  • La sentencia INSERT añade nuevas filas a la tabla.
  • La sentencia UPDATE modifica filas existentes en la tabla.
  • La instrucción DELETE elimina filas de la tabla.
  • La instrucción MERGE selecciona filas de una tabla a actualizar o insertar en otra mesa. La decisión de actualizar o insertar en la tabla de destino se basa en una condición en la cláusula ON.

Nota: MERGE es una afirmación determinista. Es decir, no se puede actualizar la misma fila de la tabla de destino varias veces en la misma sentencia MERGE. Debe tener INSERT y objetos UPDATE privilegios en la tabla de destino y SELECT privilegio en la tabla fuente.

Ejemplos:

DECLARE

V_CODIGO NUMBER := 1;
V_NOMBRE VARCHAR2(30) := 'JOSE';

BEGIN

INSERT INTO TABLA(C_CODIGO,C_NOMBRE)
VALUES (V_CODIGO,V_NOMBRE);

V_NOMBRE := 'JUAN';

UPDATE TABLA NOMBRE
SET C_NOMBRE = V_NOMBRE

WHERE C_CODIGO = V_CODIGO;

DELETE TABLA
WHERE C_CODIGO = V_CODIGO;

COMMIT;

END;

La instrucción MERGE inserciones o actualizaciones filas de una tabla utilizando los datos de otra tabla. Cada fila se inserta o actualiza en la tabla de destino en función de una condición de unión igualitaria.
El ejemplo que se muestra coincide con la columna empno en la tabla copy_emp a la columna de employee_id en la tabla empleados. Si se encuentra una coincidencia, la fila se actualiza para que coincida con la línea de la tabla empleados. Si no se encuentra la fila, se inserta en la tabla copy_emp.
El ejemplo completo de usar MERGE en un bloque PL / SQL se muestra en la página siguiente.

BEGIN
MERGE INTO copy_emp c
     USING employees e
     ON (e.employee_id = c.empno)
   WHEN MATCHED THEN
     UPDATE SET
       c.first_name     = e.first_name,
       c.last_name      = e.last_name,
       c.email          = e.email,
       c.phone_number   = e.phone_number,
       c.hire_date      = e.hire_date,
       c.job_id         = e.job_id,
       c.salary         = e.salary,
       c.commission_pct = e.commission_pct,
       c.manager_id     = e.manager_id,
       c.department_id  = e.department_id
   WHEN NOT MATCHED THEN
     INSERT VALUES(e.employee_id,  e.first_name, e.last_name,
          e.email, e.phone_number, e.hire_date, e.job_id,
          e.salary, e.commission_pct, e.manager_id, 
          e.department_id);
END;
/
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?