-3

私のSQLクエリでエラーを見つけるのを手伝ってくれる人が必要です:

CREATE PROCEDURE confirm(IN bookingID INT, OUT status VARCHAR(40))
BEGIN
DECLARE numberOfPass INT;
DECLARE contactStatus VARCHAR(30);
SET numberOfPass = (SELECT count(*) FROM passenger WHERE passenger.Booking = bookingID);
SET contactStatus = (SELECT contact FROM booking WHERE booking.Id = bookingID);
IF numberOfPass <> (SELECT numberOfSeats FROM booking WHERE booking.Id  = bookingID)) THEN SET status = "Passenger information missing";
ELSE IF ISNULL(contactStatus) THEN SET status ="Contact missing for booking";
ELSE SET status = "OK";
END IF;
END; 

次のエラーメッセージが表示されます。

エラー1064(42000):SQL構文にエラーがあります。')THEN SET status = "乗客情報がありません";の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。ELSE IF ISNULL(contactStatu'at line 7

エラーは何でしょうか?

前もって感謝します。

4

3 に答える 3

4

余分な括弧があります

IF numberOfPass <> (SELECT numberOfSeats FROM booking WHERE booking.Id  = bookingID))
于 2013-01-11T16:39:48.923 に答える
2
  • 使用するELSEIF
  • 余分な括弧を削除

完全なクエリ、

DELIMITER $$
CREATE PROCEDURE confirm(IN bookingID INT, OUT status VARCHAR(40))
BEGIN
    DECLARE numberOfPass INT;
    DECLARE contactStatus VARCHAR(30);
    SET numberOfPass = (SELECT count(*) FROM passenger WHERE passenger.Booking = bookingID);
    SET contactStatus = (SELECT contact FROM booking WHERE booking.Id = bookingID);
    IF numberOfPass <> (SELECT numberOfSeats FROM booking WHERE booking.Id  = bookingID) THEN 
        SET status = "Passenger information missing";
    ELSEIF ISNULL(contactStatus) THEN 
        SET status ="Contact missing for booking";
    ELSE 
        SET status = "OK";
    END IF;
END $$
DELIMITER ;
于 2013-01-11T16:40:09.493 に答える
1

余分な)urコードで..。

                                                                                    !!!
 IF numberOfPass <> (SELECT numberOfSeats FROM booking WHERE booking.Id  = bookingID))
于 2013-01-11T16:43:13.530 に答える