MySQL heeft twee verschillende soorten variabelen:
-
lokale variabelen (die niet zijn voorafgegaan door
@
) zijn sterk getypt en beperkt tot het opgeslagen programmablok waarin ze zijn gedeclareerd. Merk op dat, zoals gedocumenteerd onderDECLARE
Syntaxis : -
gebruikersvariabelen (die zijn voorafgegaan door
@
) zijn losjes getypt en binnen het bereik van de sessie. Houd er rekening mee dat ze niet hoeven te worden aangegeven en ook niet kunnen worden aangegeven - gebruik ze gewoon rechtstreeks.
Daarom, als u een opgeslagen programma definieert en daadwerkelijk een "lokale variabele" wilt, zoals in uw vraag staat, moet u de @
weglaten teken en zorg ervoor dat uw DECLARE
statement staat aan het begin van je programmablok. Anders, om een "gebruikersvariabele" te gebruiken, laat u de DECLARE
. vallen verklaring.
Bovendien moet u ofwel uw zoekopdracht tussen haakjes plaatsen om deze als subquery uit te voeren:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Of u kunt SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;