我有以下功能,可以在mysql v5.7中创建,但不能在mysql 8(8.0.13)中创建:
CREATE FUNCTION IsRoomAvailable(rid INT,fymd DATE,tymd DATE,bid INT)
RETURNS BOOL
READS SQL DATA
BEGIN
DECLARE bids INT;
SELECT COUNT(*) INTO bids
FROM bookings AS b
WHERE ((b.bstart<tymd AND b.bend>=fymd) OR (b.bstart<=fymd AND b.bend>tymd))
AND b.rid=rid
AND b.bid!=bid;
RETURN IF(bids>0,FALSE,TRUE);
END
我收到以下错误消息:“错误代码:1064。SQL语法中有错误;请查看与MySQL服务器版本相对应的手册,以获取在第5行“”附近使用的正确语法。
有趣的是,我在创建过程时没有这个问题,只是创建一个函数。