Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

como recorrer cursor con for

Estas en el tema de como recorrer cursor con for en el foro de PostgreSQL en Foros del Web. hola a todos, como podria recorrer un cursor con la sentencia for, gracias...
  #1 (permalink)  
Antiguo 08/07/2009, 10:50
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 1
como recorrer cursor con for

hola a todos, como podria recorrer un cursor con la sentencia for, gracias
  #2 (permalink)  
Antiguo 08/07/2009, 14:29
 
Fecha de Ingreso: noviembre-2004
Ubicación: Córdoba-Argentina
Mensajes: 15
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: como recorrer cursor con for

de que lenguaje estamos hablando ?

postgres y php ?

Última edición por horacioliva; 08/07/2009 a las 14:30 Razón: missing info
  #3 (permalink)  
Antiguo 08/07/2009, 14:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: como recorrer cursor con for

bueno quiero recorrer el cursor dentro de una funcion de postgres
  #4 (permalink)  
Antiguo 08/07/2009, 18:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: como recorrer cursor con for

yo lo hago así, no se si te sirva. Hay muchas formas de recoorerlo y todo depende de que necesites.

Código sql:
Ver original
  1. --apertura del cursor con la consulta
  2. OPEN cur FOR SELECT campo FROM tabla;
  3. --A continuacion se recorre el cursor
  4. loop
  5. fetch cur INTO variable; --Esta variable se sobvreescribe en cada ciclo.
  6. EXIT WHEN NOT FOUND;
  7. i = i + 1;
  8. -- se guardan todos los datos de la consulta en un vector.
  9. vector[i] = variable;
  10. END loop;
  11. --cierra el cursor
  12. close cur;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 10/07/2009, 18:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: como recorrer cursor con for

muy didactico tu aporte muchas gracias
  #6 (permalink)  
Antiguo 24/11/2010, 06:31
 
Fecha de Ingreso: mayo-2009
Ubicación: Fernando de la Mora - Paraguay
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: como recorrer cursor con for

complementando la sintaxis de @huesos52
Código SQL:
Ver original
  1. DECLARE vcursor CURSOR FOR SELECT prospecto FROM presupuesto_det WHERE presupuesto = 1;
  2. DECLARE vprospecto BIGINT;
  3.  
  4. BEGIN
  5.  
  6.     OPEN vcursor;
  7.     loop
  8.    
  9.         FETCH vcursor INTO vprospecto;
  10.         EXIT WHEN NOT FOUND;
  11.                
  12.                 -- Aca van las sentencias
  13.         UPDATE prospectos
  14.         SET desde_presupuesto_det ='S', estado_prospecto = 3
  15.         WHERE empresa = 1 AND
  16.             sucursal = 1 AND
  17.             ejercicio = 2010 AND
  18.             prospecto = vprospecto;
  19.        
  20.     END loop;
  21.     CLOSE vcursor;
  22. END;
Saludos desde Paraguay
  #7 (permalink)  
Antiguo 24/11/2010, 08:36
Avatar de death_nemesis  
Fecha de Ingreso: abril-2009
Ubicación: Santiago - Chile
Mensajes: 147
Antigüedad: 15 años, 8 meses
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.