我试图定义和初始化一个MySQL变量的查询。
我有以下几点:
declare @countTotal int;
SET @countTotal = select COUNT(*)
from nGrams;
我使用MySQL Netbeans中,它告诉我,我有一个错误。 什么/哪里是我的错误?
我怎样才能解决这个问题?
我试图定义和初始化一个MySQL变量的查询。
我有以下几点:
declare @countTotal int;
SET @countTotal = select COUNT(*)
from nGrams;
我使用MySQL Netbeans中,它告诉我,我有一个错误。 什么/哪里是我的错误?
我怎样才能解决这个问题?
MySQL有两种不同类型的变量:
局部变量 ( 未通过前缀@
)是强类型和范围限制在声明它们的存储程序块。 需要注意的是,在如记录DECLARE
语法 :
DECLARE
只允许内部BEGIN ... END
复合语句,并且必须是在它的开始,任何其他语句之前。
用户变量 ( 由前缀@
)是弱类型,并作用于会话。 需要注意的是,他们既不需要也不可以申报,只需直接使用它们。
因此,如果您要定义的存储程序和实际做希望有一个“局部变量”,每措辞你的问题,你将需要删除@
字符,并确保您的DECLARE
语句是在程序块的开始。 否则,使用“用户变量”,删除DECLARE
声明。
此外,你要么需要围绕以执行它作为一个子查询在括号中查询:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
否则,你可以使用SELECT ... INTO
:
SELECT COUNT(*) INTO @countTotal FROM nGrams;
试试这个:-
select @countTotal := COUNT(*) from nGrams;
功能示例:
DROP FUNCTION IF EXISTS test;
DELIMITER $$
CREATE FUNCTION test(in_number INT) RETURNS INT
BEGIN
DECLARE countTotal INT;
SET countTotal = SELECT COUNT(*) FROM nGrams;
RETURN countTotal + in_number;
END $$
DELIMITER ;
据DECLARE语法 , declare
必须是一个开始......结束块内。