MySQL a deux types de variables différents :
-
variables locales (qui ne sont pas préfixé par
@
) sont fortement typés et limités au bloc de programme stocké dans lequel ils sont déclarés. Notez que, comme documenté sousDECLARE
Syntaxe : -
variables utilisateur (qui sont préfixé par
@
) sont faiblement typés et limités à la session. Notez qu'ils ne doivent ni ne peuvent être déclarés - utilisez-les simplement directement.
Par conséquent, si vous définissez un programme stocké et que vous voulez réellement une "variable locale", selon le libellé de votre question, vous devrez supprimer le @
caractère et assurez-vous que votre DECLARE
L'instruction se trouve au début de votre bloc de programme. Sinon, pour utiliser une "variable utilisateur", déposez le DECLARE
déclaration.
De plus, vous devrez soit mettre votre requête entre parenthèses pour l'exécuter en tant que sous-requête :
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Sinon, vous pouvez utiliser SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;