我的sql函数deos不返回计数

时间:2016-06-15 08:25:45

标签: mysql sql

我在我的sql中编写了一个函数,它根据一些id返回记录数。但它总是返回值1950.这是我的查询。

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

我现在已经传递了静态id。当我将此查询作为普通sql运行时,它返回8行,但在函数内部它总是返回1950.

请帮助我。谢谢。

2 个答案:

答案 0 :(得分:0)

有一点错误;)

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

您应该用变量替换 appid appuserid

答案 1 :(得分: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 ;