Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/04/2009, 18:43
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con fechas en Stored Procedure

Estás usando el mismo nombre para la variable del parámetro de entrada que para el nombre del campo.
Es mejor evitar eso porque MySQL puede confundirse al interpretar los nombres.
Como el nombre del campo tiene prioridad por jerarquía de objetos, entonces el falor que asume es el de campo y no el de variable. Esto implica que la comparación FECHA = Fecha se hace con el valor del campo FECHA sobre si mismo... lo que siempre es TRUE. Por eso te está devolviendo todos los registros.
Pon mejor algo así:
Código sql:
Ver original
  1. DEMILITER GO;
  2. DROP PROCEDURE IF EXISTS insertDistance;
  3. GO
  4. CREATE PROCEDURE insertDistance(IN vfecha DATE)
  5. BEGIN
  6.   DECLARE done INT DEFAULT 0;
  7.   DECLARE id  INTEGER;
  8.   DECLARE lat DOUBLE;
  9.   DECLARE lng DOUBLE;
  10.  
  11.   DECLARE curPuntos CURSOR FOR
  12.       SELECT ID_RECORRIDO_VEHICULO, LATITUD, LONGITUD
  13.       FROM recorrido_vehiculo
  14.       WHERE FECHA=vfecha;
  15.  
  16.   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
  17.  
  18.   OPEN curPuntos;
  19.   REPEAT
  20.     FETCH curPuntos INTO id,lat,lng;
  21.     IF NOT done THEN          
  22.        INSERT INTO tmp (ID,LATITUD,LONGITUD,FECHA) VALUES (id,lat,lng,vfecha);
  23.     END IF;
  24.   UNTIL done END REPEAT;
  25.  
  26.   CLOSE curPuntos;
  27.  
  28. END
  29. GO
  30. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)