MySQL har två olika typer av variabler:
-
lokala variabler (som inte är prefixet av
@
) är starkt skrivna och omfångade till det lagrade programblocket där de deklareras. Observera att, som dokumenterats underDECLARE
Syntax : -
användarvariabler (som är prefixet av
@
) är löst skrivna och omfångade till sessionen. Observera att de varken behöver eller kan deklareras – använd dem bara direkt.
Därför, om du definierar ett lagrat program och faktiskt vill ha en "lokal variabel", enligt formuleringen i din fråga, måste du släppa @
tecken och se till att din DECLARE
uttalandet är i början av ditt programblock. Annars, för att använda en "användarvariabel", släpp DECLARE
uttalande.
Dessutom måste du antingen omge din fråga inom parentes för att köra den som en underfråga:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Annars kan du använda SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;