MySQL 函数 - 错误代码:1415 不允许从函数返回结果集
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16177267/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 17:26:51 来源:igfitidea点击:
MySQL Function - Error Code: 1415 Not allowed to return a result set from a function
提问by sqltracy
I am not trying to return a result set and I have no idea what I'm doing wrong here. MySQL 5.5
我不想返回结果集,我不知道我在这里做错了什么。MySQL 5.5
delimiter $$
CREATE FUNCTION CheckAccount(
i_username varchar(50)
) RETURNS integer
BEGIN
DECLARE v_validUserId int;
DECLARE v_validMembership int;
DECLARE o_Status integer;
SELECT vvalidUserId = u.UserId
FROM Users u
WHERE u.Username = i_username;
IF( v_validUserId IS NULL ) THEN
SET o_Status = 2; -- Invalid username
ELSE
SET o_Status = 1; -- Good
END IF;
IF(o_Status != 2 ) THEN
SELECT v_validMembership = 1
FROM Users u
JOIN UserMemberships um on um.UserId = u.userId
JOIN Memberships m on m.MembershipId = um.MembershipId
WHERE um.MembershipExpireDateTime > CURDATE()
AND u.UserId = v_validUserId;
IF( v_validMembership IS NULL ) THEN
SET o_Status = 3; -- Invalid membership
END IF;
END IF;
RETURN o_status;
END $$
DELIMITER ;
Any help will be greatly appreciated!
任何帮助将不胜感激!
回答by b.b3rn4rd
I'm not sure if you can assign variables that way, try use INTO
statement for your selects. For example:
我不确定您是否可以通过这种方式分配变量,请尝试INTO
为您的选择使用语句。例如:
SELECT
u.UserId INTO vvalidUserId
FROM
Users u
WHERE
u.Username = i_username;