首页 > 解决方案 > 尝试创建检查数据的函数时出现 MySQL 错误代码?

问题描述

因此,我的数据库中有两个包含成员 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,它说我的语法有问题,但我不知道出了什么问题?提前致谢!

标签: mysqlstored-functions

解决方案


您可以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 ;

推荐阅读