MySQL har to forskellige typer variable:
-
lokale variabler (som ikke er præfikset med
@
) er stærkt skrevet og scoped til den lagrede programblok, hvori de er erklæret. Bemærk, at som dokumenteret underDECLARE
Syntaks : -
brugervariabler (som er præfikset med
@
) er løst skrevet og scoped til sessionen. Bemærk, at de hverken behøver eller kan deklareres - bare brug dem direkte.
Derfor, hvis du definerer et lagret program og faktisk ønsker en "lokal variabel", i henhold til ordlyden i dit spørgsmål, bliver du nødt til at droppe @
tegn og sørg for, at din DECLARE
sætning er i starten af din programblok. Ellers skal du slippe DECLARE
for at bruge en "brugervariabel". erklæring.
Desuden skal du enten omgive din forespørgsel i parentes for at udføre den som en underforespørgsel:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Ellers kan du bruge SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;