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

Respuestas a la pregunta(1)

Su respuesta a la pregunta