Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/11/2010, 08:36
Avatar de death_nemesis
death_nemesis
 
Fecha de Ingreso: abril-2009
Ubicación: Santiago - Chile
Mensajes: 147
Antigüedad: 15 años
Puntos: 2
Respuesta: como recorrer cursor con for

Así lo hago yo con un ciclo FOR

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION fechas(V_IDVehiculo INTEGER)  RETURNS text AS $BODY$
  2. DECLARE
  3.     OrdenSgte    INTEGER = 0;
  4.     V_TAREASGTE  INTEGER = 0;
  5.     V_Fech_final TIMESTAMP WITHOUT TIME ZONE;
  6.     V_ROW_DATA   TAREAS%ROWTYPE; --Va un simbolo de porcentaje entremedio de TAREAS y ROWTYPE
  7.    
  8. BEGIN
  9.     FOR V_ROW_DATA IN SELECT * FROM TAREAS WHERE ID_VEHICULO = V_IDVehiculo ORDER BY ID_TAREA LOOP
  10.         SELECT INTO V_Fech_final FECHA_FINALIZACION FROM TAREAS WHERE ID_TAREA = V_ROW_DATA.ID_TAREA;
  11.         IF V_Fech_final IS NOT NULL THEN
  12.             SELECT INTO OrdenSgte (orden + 1) FROM tareas WHERE id_tarea = V_ROW_DATA.ID_TAREA;
  13.             SELECT INTO V_TAREASGTE ID_TAREA FROM TAREAS WHERE ORDEN = OrdenSgte AND ID_VEHICULO = V_IDVehiculo;
  14.             IF V_TAREASGTE IS NOT NULL THEN
  15.                 UPDATE TAREAS SET FECHA_REAL_INICIO = V_Fech_final WHERE ID_TAREA = V_TAREASGTE;
  16.             END IF;
  17.         END IF;
  18.     END LOOP;
  19. END;
  20. $_$
  21. LANGUAGE plpgsql;

Última edición por death_nemesis; 24/11/2010 a las 08:42