MySQL局部变量

Cod*_*lus 28 mysql variables local set declare

我正在尝试为查询定义和初始化MySQL变量.

我有以下内容:

declare @countTotal int;
SET @countTotal = select COUNT(*)
 from nGrams;
Run Code Online (Sandbox Code Playgroud)

我在Netbeans中使用MySQL,它告诉我我有错误.我的错误是什么/在哪里?

我怎样才能解决这个问题?

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)


Rah*_*thi 6

试试这个:-

 select @countTotal := COUNT(*) from nGrams;
Run Code Online (Sandbox Code Playgroud)