MySQL hat zwei verschiedene Typen von Variablen:
-
lokale Variablen (die nicht sind mit vorangestelltem
@
) sind stark typisiert und auf den gespeicherten Programmblock beschränkt, in dem sie deklariert sind. Beachten Sie, wie unterDECLARE
dokumentiert Syntax : -
Benutzervariablen (welche sind mit vorangestelltem
@
) sind lose typisiert und auf die Sitzung beschränkt. Beachten Sie, dass sie weder deklariert werden müssen noch können – verwenden Sie sie einfach direkt.
Wenn Sie also ein gespeichertes Programm definieren und tatsächlich eine "lokale Variable" wünschen, müssen Sie gemäß dem Wortlaut in Ihrer Frage den @
löschen Zeichen und stellen Sie sicher, dass Ihr DECLARE
-Anweisung steht am Anfang Ihres Programmblocks. Andernfalls, um eine "Benutzervariable" zu verwenden, lassen Sie DECLARE
fallen Aussage.
Außerdem müssen Sie Ihre Abfrage entweder in Klammern setzen, um sie als Unterabfrage auszuführen:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Oder Sie könnten SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;