parámetro de función almacenada mysql
Acabo de comenzar a crear una función almacenada, esta es mi primera vez, así que tengo algunos problemas. Actualmente llamo a la función usandoSELECT test();
(prueba es el nombre de la función por ahora). Quiero enviar un número a la función (ID de nombre de usuario) y que me devuelvan el nombre de usuario.
Tengo esto trabajando usandoSELECT test(1);
1 es la ID de un usuario en la tabla. Esto parece funcionar cuando se devuelve el nombre de usuario, pero si escribo cualquier número, también se devuelve el mismo nombre de usuario.
BEGIN
DECLARE new_username VARCHAR(90);
SELECT `username` INTO new_username FROM `users` WHERE `ID` = ID;
return new_username;
END
He configurado el parámetro comoID int
.
¿Tengo razón al pensar que la palabra claveINTO
pondrá el valor del nombre de usuario en la variablenew_username
? Si lo ejecuto sin elINTO
Me sale el error:
No se permite devolver un conjunto de resultados de una función
¿He cometido algún error obvio en esto, espero no haberlo hecho?totalmente incorrecto. Gracias por cualquier consejo :).
Editar: Acabo de agregar algunas filas más en mi tabla, ahora aparece el error:
El resultado consistió en más de una fila
Versión sql completa:
CREATE DEFINER=`elliotts`@`%` FUNCTION `test`(ID int)
RETURNS varchar(32) CHARSET latin1
BEGIN
DECLARE new_username VARCHAR(32);
SELECT `username`
INTO new_username
FROM `users`
WHERE `ID` = ID;
return new_username;
END