1

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”; END IF;

返品ステータス; 10行目のEND'

助けていただければ幸いです。

前もって感謝します

4

1 に答える 1

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 ;
于 2013-01-12T00:48:49.937 に答える