Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Claúsula RETURNING

20 enero, 2012

RETURNING INTO

Se utiliza en sentencias UPDATE y DELETE.
Devuelve valores de columna que han sido modificados/borrados por la orden DML anterior.
Sólo se puede utilizar en tablas, vistas materializadas y vistas basadas en una sola tabla y SOLO 1 registro:

DELETE FROM EMPLEADOS
WHERE EmpID = aEmpID
RETURNING nombre, apellidos INTO vname, vApp;
 
UPDATE EMPLEADOS
SET salario = salario * 1,2
WHERE EmpID = aEmpID
RETURNING salario INTO v$1

RETURNING .. BULK COLLECT INTO

Si la sentencia afecta a más de una fila podemos seguir utilizando la claúsula returning into, pero tenemos que usar una colección para almacenar los datos, con BULK COLLECT.

SET SERVEROUTPUT ON
DECLARE  TYPE c1_emp IS TABLE OF EMPLEADOS.CAMPO1%TYPE;
list_emp c1_emp;
BEGIN
  UPDATE PRUEBA  SET    CAMPO1 = CAMPO1
  RETURNING id BULK COLLECT INTO list_emp;
  FOR i IN list_emp.first .. list_emp.last LOOP
    DBMS_OUTPUT.put_line('Realizado update CAMPO1=' || list_emp (i));
  END LOOP;
  COMMIT;
END;
/