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
Vous devez vous connecter pour publier un commentaire.
Utilisation:
L'esprit que le type VARCHAR longueur de la valeur de RETOUR correspond à la variable, qui doit correspondre à la longueur de la colonne que vous souhaitez retourner.
Exécuter le code dans un script séparé onglet--d'une certaine manière vous avez réussi à le coller à l'intérieur d'une fonction/procédure stockée déclaration.
Que voulez-vous faire dans le cas où le nom d'utilisateur est NULLE? Vous vous rendez compte que la valeur de retour sera également NULLE si quelqu'un exécute la fonction avec la valeur d'un paramètre qui n'existe pas dans le tableau?
Oui, je suis de vérifier si il n'existe pas nouveau_nom_utilisateur sera égal à "nom d'utilisateur n'est pas trouvé" . Merci encore.
Voir mise à jour
OriginalL'auteur OMG Ponies