2016-06-15 2 views
0

У меня есть одна функция, написанная в моем sql, которая возвращает количество записей, основанных на некоторых идентификаторах. Но он всегда возвращает значение 1950. Вот мой запрос.Моя функция sql deosn't return count

CREATE DEFINER=`trajectory`@`%` FUNCTION `fn_ReturnAlreadyPlayedGames`(AppId int(11),AppUserid int(11)) 
RETURNS int(11) 
BEGIN 
declare Counting int(11); 
set Counting=(
select count(*) 
from user_sessions 
where appid= 5 and appuserid= 41 and status=1); 
RETURN Counting; 
END 

Я прошел статические идентификаторы для now.when я запускаю этот запрос как обычный SQL, то он возвращает 8 строк, но внутри функции она всегда возвращает 1950.

Пожалуйста, помогите мне в this.Thanks заранее.

+0

Это решается me.Actually существует проблема с именами столбцов и параметром name.Both является same.So, я использовал таблицу псевдонимы для этого. Спасибо всем за вашу помощь. –

+0

Рад узнать, в чем была проблема. Хорошая практика - иметь имена параметров уникальными именами столбцов, чтобы избежать путаницы и проблем с областью. –

ответ

0

есть маленькая ошибка;)

where appid= 5 and appuserid= 41 and status=1); 

вы должны заменить APPID и appuserid с вашими переменными

+0

Вы говорите о числах, которые нужно заменить, например, 5 и 41. Если да, то на данный момент мне просто нужны записи по номерам. –

+0

Да, с этими значениями вы всегда сориентируете счет, связанный с этим appid (= 5) и appuserid (= 41), и это 1950. Когда вы подставляете эти значения вашими параметрами, вы получаете количество записей, связанных с этим параметром значения apopid и userappid –

+0

CREATE DEFINER = 'trajectory' @'% 'FUNCTION' fn_ReturnAlreadyPlayedGames' (AppId int (11), AppUserid int (11)) RETURNS int (11) BEGIN declare Counting int (11); set Counting = ( select count (*) from user_sessions где appid = AppId и appuserid = AppUserid и status = 1); RETURN Подсчет; END Он по-прежнему возвращает тот же результат. Я ввел запрос выше с измененными параметрами. –

0

Проблема с тем же именем для параметров функции и столбцы. Поэтому используйте псевдоним, ссылаясь на столбцы. Или просто переименуйте параметры функции.

DELIMITER $$ 
CREATE FUNCTION fn_ReturnAlreadyPlayedGames(AppId int(11),AppUserid int(11)) 
RETURNS int(11) 
BEGIN 
    declare Counting int(11); 
    set Counting=(select count(*) from user_sessions us where us.appid= 5 and us.appuserid= 41 and us.status=1); 
    RETURN Counting; 
END$$ 
DELIMITER ; 

С параметрами

DELIMITER $$ 
    CREATE FUNCTION fn_ReturnAlreadyPlayedGames(appid_param int(11),appuserid_param int(11)) 
    RETURNS int(11) 
    BEGIN 
     declare Counting int(11); 
     set Counting=(select count(*) from user_sessions us where us.appid= appid_param and us.appuserid= appuserid_param and us.status=1); 
     RETURN Counting; 
    END$$ 
    DELIMITER ; 
Смежные вопросы