【问题标题】:MySQL Function - Error Code: 1415 Not allowed to return a result set from a functionMySQL 函数 - 错误代码:1415 不允许从函数返回结果集
【发布时间】:2013-04-17 03:14:30
【问题描述】:

我不想返回结果集,我不知道我在这里做错了什么。 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 ;

任何帮助将不胜感激!

【问题讨论】:

    标签: mysql function set


    【解决方案1】:

    我不确定您是否可以通过这种方式分配变量,请尝试使用INTO 语句进行选择。例如:

    SELECT 
        u.UserId INTO vvalidUserId 
    FROM 
        Users u
    WHERE 
        u.Username = i_username;
    

    【讨论】:

    • 你是个天才!!!太感谢了!它没有将其显示为错误,所以我永远不会自己发现。
    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2019-09-03
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2012-04-19
    相关资源
    最近更新 更多