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 onderDECLARESyntaxis : -
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;