egg*_*yal 42
MySQL有两种不同类型的变量:
局部变量(没有前缀的@)是强类型的,并且作用域是声明它们的存储程序块.请注意,如DECLARE语法中所述:
DECLARE只允许在BEGIN ... END复合语句中使用,并且在任何其他语句之前必须在其开头.
用户变量(以前缀为前缀@)松散地键入并限定为会话.请注意,它们既不需要也不能声明 - 只需直接使用它们即可.
因此,如果要定义存储的程序并且实际上想要"局部变量",则根据问题中的措辞,您需要删除该@字符并确保您的DECLARE语句位于程序块的开头.否则,要使用"用户变量",请删除该DECLARE语句.
此外,您需要在括号中包围查询,以便将其作为子查询执行:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用SELECT ... INTO:
SELECT COUNT(*) INTO @countTotal FROM nGrams;
Run Code Online (Sandbox Code Playgroud)