MySQL - duda en una funcion en mysql

 
Vista:

duda en una funcion en mysql

Publicado por Novata (4 intervenciones) el 07/05/2014 17:01:32
hice una funcion con un consulta select muy simple que ya probe y si funciona pero al momento de ejecutarlo en la funcion no me arroja resultados no se si tenga mal acomodado algo

me puden ayudar...

1
2
3
4
5
6
7
Select min(a.hora) into @nmaxfecha from db_mibase.registros  t
		LEFT JOIN base2.tabla2 m on (m.tarjeta=t.tarjeta)
	where t.tarjeta  = miparametro(un numero de 5 digitos)
and (t.entradas ='elevador 01' or t.entradas = 'elevador 02')
and t.registro = 'entrada' and t.piso = 19
	ORDER BY t.hora
		limit 1 ;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Willian
Val: 2
Ha aumentado su posición en 60 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

duda en una funcion en mysql

Publicado por Willian (52 intervenciones) el 07/05/2014 18:16:13
Podes postar tu función?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda en una funcion en mysql

Publicado por Novata (4 intervenciones) el 07/05/2014 18:40:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
BEGIN
	#Routine body goes here...
		Declare descrip VARCHAR(100) DEFAULT '';
set @grupo = null;
Set @nmaxfecha = null;
 
if miparametro = 1 then
 
Select min(a.hora) into @nmaxfecha from db_mibase.registros  t
		LEFT JOIN base2.tabla2 m on (m.tarjeta=t.tarjeta)
	where t.tarjeta  = miparametro(un numero de 5 digitos)
and (t.entradas ='elevador 01' or t.entradas = 'elevador 02')
and t.registro = 'entrada' and t.piso = 19
	ORDER BY t.hora
		limit 1 ;
 
else
 
Select max(a.hora) into @nmaxfecha from db_mibase.registros  t
		LEFT JOIN base2.tabla2 m on (m.tarjeta=t.tarjeta)
	where t.tarjeta  = miparametro(un numero de 5 digitos)
and (t.entradas ='elevador 01' or t.entradas = 'elevador 02')
and t.registro = 'salida' and t.piso = 19
	ORDER BY t.hora
		limit 1 ;
 
 
 
Set descrip = @nmaxfecha;
	#Set descrip = @nmaxfecha;
 
	RETURN descrip;
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian
Val: 2
Ha aumentado su posición en 60 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

duda en una funcion en mysql

Publicado por Willian (52 intervenciones) el 07/05/2014 18:56:35
Bueno veo claramente algunos errores en tu función
Abajo sigue un ejemplo con tu select a ver si te funciona..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
DELIMITER $$
CREATE FUNCTION `mi_funcion`(miparametro  INT(10)) RETURNS varchar(100) CHARSET utf8
    SQL SECURITY INVOKER
BEGIN
	Declare descrip VARCHAR(100) DEFAULT '';
        Set @grupo = '';
        Set @nmaxfecha = '';
 
if miparametro = 1 then
	Select min(a.hora) into @nmaxfecha from db_mibase.registros t
	LEFT JOIN base2.tabla2 m on (m.tarjeta=t.tarjeta)
	where t.tarjeta = miparametro(un numero de 5 digitos)
	and (t.entradas ='elevador 01' or t.entradas = 'elevador 02')
	and t.registro = 'entrada' and t.piso = 19
	ORDER BY t.hora
	limit 1 ;
 
else
 
	Select max(a.hora) into @nmaxfecha from db_mibase.registros t
	LEFT JOIN base2.tabla2 m on (m.tarjeta=t.tarjeta)
	where t.tarjeta = miparametro(un numero de 5 digitos)
	and (t.entradas ='elevador 01' or t.entradas = 'elevador 02')
	and t.registro = 'salida' and t.piso = 19
	ORDER BY t.hora
	limit 1 ;
 
end if;
 
Set descrip = @nmaxfecha;
#Set descrip = @nmaxfecha;
 
RETURN descrip;
 
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda en una funcion en mysql

Publicado por Novata (4 intervenciones) el 07/05/2014 20:20:27
hola:

mira no especifique pero recibe 2 parametros dee entrada uno que recibe si fue una entrada o una salida que es el que le digo

if miparametro = 1 ---

y otro parametro que recibe el numero de la tarjeta que es donde dice (where t.tarjeta = miparametro(un numero de 5 digitos))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda en una funcion en mysql

Publicado por Novata (4 intervenciones) el 07/05/2014 18:53:13
a y al momento de hacer la prueba para ver si mi @nmaxfecha esta tomando el resultado del Select

me lanza esto : primero mi resultado que es la hora : 14:03:00 (es lo que quiero) ,pero donde checo la variable me lanza esto: @nmaxfecha = BLOB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar