在MySQL中设置声明变量的值时遇到问题。如果我在MySQL命令行中运行以下命令,那一切都很有效:
SET @numberOfMonths = (SELECT COUNT(\*) FROM (SELECT DISTINCT months WHERE year = 2010) as A);
SELECT @numberOfMonths;
因此,对于这个特定的例子,它返回6 如果我这样做,我也没有任何问题:
DELIMITER @@
CREATE PROCEDURE GetPropertyTenantPayment()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE numberOfMonths INT DEFAULT 6;
....
END;
@@
不,问题,程序可行,但一旦我这样做了:
DELIMITER @@
CREATE PROCEDURE GetPropertyTenantPayment()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE numberOfMonths INT;
SET numberOfMonths = (SELECT COUNT(\*) FROM (SELECT DISTINCT month WHERE year = 2010) as A);
...
END;
@@
我在SET numberOfMonths行遇到语法错误。我真的不明白为什么?我在程序之外做同样的事情并没有问题。谢谢你的帮助!
答案 0 :(得分:1)
不知道这是否是您正在寻找的答案,但每当我在存储过程中工作时,我都会使用SELECT ... INTO方法来设置变量。因此,在这种情况下,您可以使用:
SELECT COUNT(*) INTO numberOfMonths FROM (SELECT DISTINCT month WHERE year = 2010);