我在我的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.
请帮助我。谢谢。
答案 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 ;