O MySQL tem dois tipos diferentes de variáveis:
-
variáveis locais (que não são prefixado por@
) são fortemente tipados e com escopo definido para o bloco de programa armazenado no qual são declarados. Observe que, conforme documentado emDECLARE
Sintaxe :
-
variáveis de usuário (que são prefixado por@
) são digitados livremente e com escopo definido para a sessão. Observe que eles não precisam nem podem ser declarados - apenas use-os diretamente.
Portanto, se você estiver definindo um programa armazenado e realmente quiser uma "variável local", de acordo com o texto da sua pergunta, será necessário descartar o
@
caractere e certifique-se de que seu DECLARE
instrução está no início do seu bloco de programa. Caso contrário, para usar uma "variável de usuário", solte o DECLARE
demonstração. Além disso, você precisará colocar sua consulta entre parênteses para executá-la como uma subconsulta:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Ou então, você pode usar
SELECT ... INTO
:SELECT COUNT(*) INTO @countTotal FROM nGrams;