2013-04-23 33 views
6

Tôi không cố gắng trả lại tập kết quả và tôi không biết mình đang làm gì sai ở đây. MySQL 5.5Chức năng MySQL - Mã lỗi: 1415 Không được phép trả lại tập hợp kết quả từ hàm

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 ; 

Mọi trợ giúp sẽ được đánh giá cao!

Trả lời

8

Tôi không chắc chắn nếu bạn có thể gán biến theo cách đó, hãy thử sử dụng câu lệnh INTO cho các lựa chọn của bạn. Ví dụ:

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

Bạn là GENIUS !!! Cảm ơn bạn rất nhiều! Nó đã không được hiển thị như là một lỗi vì vậy tôi sẽ không bao giờ tìm thấy rằng trên của riêng tôi. – sqltracy

Các vấn đề liên quan