我有以下功能,可以在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行“”附近要使用的正确语法
有趣的是,我在创建过程时没有这个问题,只是创建了一个函数。
1条答案
按热度按时间kxxlusnw1#
您需要将分隔符定义为除
;
(例如:$$
). 最后,将分隔符重新定义回;
:p、 在mysql中,我对5.7文档和8.0文档中的用户定义函数进行了比较。似乎什么都没变。