Проблема установки значения переменной в процедуре MySQL - PullRequest
1 голос
/ 01 сентября 2010

Не удается установить значение объявленной переменной в 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 Ответ

1 голос
/ 01 сентября 2010

Не знаю, ищите ли вы ответ, но всякий раз, когда я работаю внутри хранимой процедуры, я использую метод SELECT ... INTO для установки переменных. Итак, в этом случае вы можете использовать:

SELECT COUNT(*) INTO numberOfMonths FROM (SELECT DISTINCT month WHERE year = 2010);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...