/ / Meine SQL-Funktion gibt deos nicht count zurück - mysql, sql

Meine SQL-Funktion gibt keine Rückgabe zurück - mysql, sql

Ich habe eine Funktion in meinem SQL geschrieben, die die Anzahl der Datensätze basierend auf einigen IDs zurückgibt. Sie gibt jedoch immer den Wert 1950 zurück. Hier ist meine Abfrage.

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

Ich habe vorerst statische IDs übergeben. Wenn ich diese Abfrage als einfaches SQL ausführe, gibt sie 8 Zeilen zurück, aber innerhalb der Funktion gibt sie immer 1950 zurück.

Bitte helfen Sie mir dabei. Vielen Dank im Voraus.

Antworten:

0 für die Antwort № 1

da ist ein kleiner fehler;)

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

Sie sollten ersetzen Appid und appuserid mit Ihren Variablen


0 für die Antwort № 2

Das Problem ist die Verwendung des gleichen Namens für die Funktionsparameter und die Spalten. Verwenden Sie daher einen Alias, wenn Sie auf die Spalten verweisen. Oder benennen Sie einfach die Funktionsparameter um.

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 ;

Mit den Parametern

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 ;