mysql stockés les paramètres de la fonction

Je viens de commencer à créer une fonction stockée c'est ma première fois donc je vais avoir quelques problèmes. Actuellement j'ai appeler la fonction à l'aide de SELECT test(); (test est le nom de la fonction pour l'instant). Je veux envoyer un numéro de la fonction (ou le nom d'utilisateur ID) et d'avoir le nom d'utilisateur retourné.

J'ai ce travail en utilisant SELECT test(1); 1 est l'ID d'un utilisateur dans la table. Cela semble fonctionner comme le nom d'utilisateur est renvoyé, mais si je tape dans tout les mêmes nom d'utilisateur est renvoyé aussi.

BEGIN 

 DECLARE new_username VARCHAR(90);    

    SELECT `username` INTO  new_username FROM `users` WHERE `ID` = ID;

 return new_username;
END

J'ai mis le paramètre que ID int .

Suis-je en droit de penser que le mot-clé INTO va mettre la valeur de nom d'utilisateur dans la variable new_username ? Si je le lance sans le INTO j'obtiens l'erreur:

Pas autorisés à retourner un ensemble de résultats à partir d'une fonction

J'ai fait toutes les erreurs évidentes dans ce, j'espère que je n'ai pas fait totalement mal. Merci pour les conseils :).

Edit : j'ai juste ajouté un peu plus de lignes dans ma table , je reçois l'erreur:

Résultat était constituée de plus d'une ligne

Complète de sql version:

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

OriginalL'auteur Elliott | 2010-10-19