Sql Query中的错误 - 找不到解决方案

时间:2013-01-11 23:53:36

标签: mysql sql database

我在查询SQL查询时遇到了很大的麻烦。

CREATE FUNCTION freeSeats(bookingID INT)
RETURNS VARCHAR(30)
BEGIN
DECLARE numberBooked INT ;
DECLARE status VARCHAR(30);

SELECT count(*) FROM passenger WHERE Booking IN(SELECT Id FROM booking WHERE
Flight = (SELECT Flight FROM booking WHERE Id = bookingID)) INTO numberBooked;

IF (numberBooked > 59) THEN SET status =”No free seats”;
ELSE SET status =”OK”;
END IF;

RETURN status;
END;

我收到此错误消息:

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   语法在“免费席位”附近使用; ELSE SET status =“OK”;结束如果;

     

退货状态;结束'第10行

我将不胜感激。

提前致谢

1 个答案:

答案 0 :(得分:1)

  • 不要更改DELIMITER
  • 使用单引号

例如,

DELIMITER $$
CREATE FUNCTION freeSeats(bookingID INT)
RETURNS VARCHAR(30)
BEGIN
    DECLARE numberBooked INT ;
    DECLARE status VARCHAR(30);

    SET numberBooked =
    (
    SELECT count(*) 
    FROM passenger 
    WHERE Booking IN 
        (   SELECT  Id 
            FROM    booking 
            WHERE   Flight = (SELECT Flight FROM booking WHERE Id = bookingID)
        ) 
    );

    IF (numberBooked > 59) THEN 
        SET status = 'No free seats';
    ELSE 
        SET status = 'OK';
    END IF;

    RETURN status;
END $$
DELIMITER ;