MySQL има два различни типа променливи:
-
локални променливи (които не са с префикс
@
) са строго въведени и с обхват до съхранения програмен блок, в който са декларирани. Имайте предвид, че както е документирано подDECLARE
Синтаксис : -
потребителски променливи (които са с префикс
@
) са свободно въведени и обхват на сесията. Имайте предвид, че те нито се нуждаят, нито могат да бъдат декларирани – просто ги използвайте директно.
Следователно, ако дефинирате съхранена програма и всъщност искате "локална променлива", според формулировката във вашия въпрос, ще трябва да пуснете @
символ и се уверете, че вашият DECLARE
операторът е в началото на вашия програмен блок. В противен случай, за да използвате "потребителска променлива", пуснете DECLARE
изявление.
Освен това ще трябва или да заградите заявката си в скоби, за да я изпълните като подзаявка:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
В противен случай можете да използвате SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;