mysql - 尝试创建检查数据的函数时出现 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,它说我的语法有问题,但我不知道出了什么问题?提前致谢!
解决方案
您可以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 ;
推荐阅读
- testing - 如何在 Katalon 中选择当前日期?
- python - 在生产中错误的 url 显示内部服务器错误而不是自定义的 404 [已解决]
- c# - Moq:模拟控制器抽象基类的接口
- python - AWS RDS 使用令牌处理重新连接
- visual-studio - 如何取消 VisualStudio 中项目的重建而无需再次构建?
- java - 使用时间戳签署 XML 文档
- spring-cloud-stream - Spring Cloud kafka Stream Binder transactionIdPrefix 性能命中
- ruby-on-rails - 从初始化程序调用 ActionMailer::Base.mail 方法时“不可用”
- java - 在android改造中使用mutlipart注释时如何发送对象
- python - 使用 pandas 将文件连接成 2 个数据帧