[ Foro de SQL (y MySQL) ]

Error en procedimiento MySql

07-Jul-2016 20:31
Invitado (josevi)
4 Respuestas

Hola, tengo el siguiente procedimiento:
CREATE DEFINER=`root`@`localhost` PROCEDURE `calculo_fecha`()
BEGIN
DECLARE contador int default 1;
declare dif_max int default 0;
declare tempo_max date;
declare tempo_min date;
declare resta int;
declare total_reg int;
declare hecho int default 0;
declare puntero CURSOR for SELECT fecha from datos order by salida_num asc;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET hecho = 1;

open puntero;
SELECT found rows INTO total_reg;
miloop:LOOP

fetch puntero into tempo_max, tempo_min;
if hecho = 1 then
leave miloop;
end if;
if contador != 0 then
set tempo_min = (select fecha from datos where salida_num = contador);
set tempo_max = (select fecha from datos where salida_num = contador + 1);
set resta = tempo_max - tempo_min;
if resta > dif_max THEN
set dif_max = resta;
else set contador = contador + 1;
end if;
end if;
end loop;
close puntero;
select dif_max;
END
Se supone que lo que hace es recorrer toda la tabla 'datos' en busca de la mayor diferencia de días entre dos entradas consecutivas, el problema es que me muestra el error:
#1054 - Unknown column 'found' in 'field list'
¿Podéis ayudarme con el error?. Gracias.


08-Jul-2016 17:01
Invitado (Ivan)

Hola  Lo que te indica que no tenes ningún campo con el nombre que ejecutas la consulta. Puede  que  tus  columnas  no  existan  asegurate bien y que la db este bien escrita  saludos


08-Jul-2016 17:09
Invitado (ivan)

Lo que te indica que no tenes ningun campo con el nombre que ejecutas la consulta  asegurate bien y que la db este bien escrita


08-Jul-2016 18:02
José Vicente Zahonero García

La Bd está bien escrita:
CREATE TABLE `datos` (
 `salida_num` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `recorrido` varchar(50) COLLATE utf8_spanish2_ci NOT NULL,
 `tiempo` varchar(8) COLLATE utf8_spanish2_ci NOT NULL,
 `distancia` decimal(5,2) NOT NULL,
 `calorias` decimal(6,2) NOT NULL,
 `kmh` decimal(4,2) NOT NULL,
 `fecha` date NOT NULL,
 PRIMARY KEY (`salida_num`)
) ENGINE=InnoDB AUTO_INCREMENT=133 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci;
La llevo usando 3 años y ahora quería sacar ese dato.


12-Jul-2016 14:16
Nacho Cabanes (+31)

Una cosa es que no esté en la tabla, y otra que no sea un dato que se pueda obtener a partir de tu SELECT. El que el campo esté en la tabla no quiere decir que lo estés usando en la query, o quizá lo estés "ocultando" con un alias, como parece indicar ese

SELECT found rows INTO total_reg;






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)