2013-01-11 58 views
-2

我需要有人來幫助我,使我的SQL查詢中發現的錯誤:錯誤在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; 

我收到以下錯誤信息:

ERROR 1064(42000):你有你的SQL語法錯誤;請檢查 手冊,該手冊對應於您的MySQL服務器版本右邊的 語法,以便在''附近使用')THEN SET status =「乘客信息 失蹤」; ELSE IF ISNULL(contactStatu」在第7行

這可能是什麼錯誤?提前

感謝。

回答

4

你在

IF numberOfPass <> (SELECT numberOfSeats FROM booking WHERE booking.Id = bookingID)) 
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 ; 
+0

非常感謝你,我不知道我應該使用ELSEIF。 – mrjasmin

+0

不客氣':D' –

1

額外)在我們的代碼...

                    !!! 
IF numberOfPass <> (SELECT numberOfSeats FROM booking WHERE booking.Id = bookingID))