尝试创建检查数据的函数时出现MySQL错误代码?

时间:2018-11-20 17:20:48

标签: mysql stored-functions

所以我的数据库中有两个包含成员ID的表。我正在尝试创建一个存储函数,当某个成员不在表A中而是在表B中时,该函数将返回0。

这是我的代码:

Delimiter //
CREATE FUNCTION DoesMemberExist ( mid char(10))
RETURNS INTEGER
READS SQL DATA
BEGIN
IF(((SELECT COUNT(*) 
     FROM members 
     WHERE member_id = mid) = 0) AND ((SELECT COUNT(*) 
                                       FROM rent_equipment_log
                                       WHERE member_id = mid) > 0)) THEN
RETURN 0;
ELSE RETURN 1;
END IF;
END;

我得到的错误是1064,它表示我的语法有问题,但我不知道出了什么问题?预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以改为使用EXISTS()。另外,缺少END IF来结束IF子句。

DELIMITER //
CREATE FUNCTION DoesMemberExist ( mid char(10))
RETURNS INTEGER
READS SQL DATA
BEGIN
  IF( NOT EXISTS(SELECT 1 FROM members 
                 WHERE member_id = mid) 
      AND 
      EXISTS(SELECT 1 FROM rent_equipment_log 
             WHERE member_id = mid) ) THEN 
    RETURN 0;
  ELSE RETURN 1;
  END IF;   -- We need to END the IF clause
END //
DELIMITER ;   -- Redefine the delimiter back to ;