问题设置MySQL过程中的变量值

时间:2010-08-31 21:25:42

标签: mysql stored-procedures variables

在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行遇到语法错误。我真的不明白为什么?我在程序之外做同样的事情并没有问题。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

不知道这是否是您正在寻找的答案,但每当我在存储过程中工作时,我都会使用SELECT ... INTO方法来设置变量。因此,在这种情况下,您可以使用:

SELECT COUNT(*) INTO numberOfMonths FROM (SELECT DISTINCT month WHERE year = 2010);