Si je crée cette procédure stockée ci-dessous et l'exécute, je récupère les deux lignes de la table alors qu'il ne devrait s'agir que d'une seule requête.La procédure stockée MySQL renvoie plusieurs enregistrements alors qu'une requête simple en renvoie une
CREATE PROCEDURE `getUserName`(IN Guid VARCHAR(36), IN GameID INT(11))
BEGIN
SELECT `Name` as UserName, `GUID` as guid
FROM playerdata
WHERE `GUID` = Guid AND `GameID` = GameID;
END
CALL getUserName('86fd1007-4a9c-11e7-b2e2-1803733c2d41', 1001);
retours Voir l'image
Cependant, si je lance simplement comme une requête régulière
SELECT `Name` as UserName, `GUID` as guid
FROM playerdata
WHERE `GUID` = "86fd1007-4a9c-11e7-b2e2-1803733c2d41" AND `GameID` = 1001;
retours Voir l'image
Je suis déconcerté quant au comportement Considérant ... au moins pour moi, ils sont la même chose.
Renommez les paramètres de procédure stockée, par exemple '_Guid' et' _GameID'. Voir [C.1 Restrictions sur les programmes stockés :: Conflits de noms dans les routines stockées] (https://dev.mysql.com/doc/refman/5.7/fr/stored-program-restrictions.html). – wchiquito
\ "GUID \' et Guid sont la même chose. C'est la même chose que 1 = 1. – Strawberry
Eh bien, ça explique ça. Je n'arrête pas d'oublier quand je passe à SQL qui est insensible à la casse sur la plupart des choses. –