MySQL - SP (funciones)

 
Vista:

SP (funciones)

Publicado por Efren (3 intervenciones) el 09/02/2005 05:21:12
Hola,

Me he tropezado con un problema en las funciones de la version 5, tengo esta funcion:

create function f_get(p_u int(10),
p_m tinyint(3))
returns tinyint(3)
begin
declare v_tempdata tinyint(3) default 0;
declare v_percent tinyint(3) default 10;

declare c_m cursor for
select 1 from srchm m
where m.idu =p_u and m.idm =p_m limit 1;

declare continue handler for not found set v_percent =v_percent -1;

open c_m;
fetch c_m into v_tempdata;
close c_m;

return v_percent;
end

y obtengo estos resultados, suponiendo q la tabla "srchm " tiene como valores idu =2, idm =5:
--------------------------------------
mysql> select f_getcomppers(2,5);
+---------------------------+
| f_getcomppers(2,5) |
+---------------------------+
| 1 | (deberia retornar 10, no el uno de la select.
+---------------------------+
1 row in set (0.08 sec)

mysql> select f_getcomppers(2,1212);
+--------------------------------+
| f_getcomppers(2,1212) |
+--------------------------------+
| 9 | (este esta bien, se dispara el handler y decrementa
+--------------------------------+
1 row in set (0.00 sec)

mysql> select f_getcomppers(2,5), 'otro campo'
+---------------------------+----------------+
| f_getcomppers(2,5) | otro campo |
+---------------------------+----------------+
| 1 | 10 |
+---------------------------+----------------+
1 row in set (0.00 sec) ( sigue con el 1 donde deberia estar el 10 y el 10 sale en 'otro campo' donde deberia salir esta misma contante.

alguien me puede dar alguna sugerencia.
Gracias de antemano
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