我有以下函数,可以在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行附近使用的正确语法。”
有趣的是,在创建过程时,我没有这个问题,只需要创建一个函数。
发布于 2018-11-06 20:14:23
您需要将分隔符定义为;以外的其他内容(例如:$$)。最后,将分隔符重新定义为;
DELIMITER $$
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 $$
DELIMITER ;https://stackoverflow.com/questions/53177988
复制相似问题