2013-04-27 60 views
2

任何人都可以告訴我以下程序有什麼問題嗎? MySQL說這是一個'意想不到的IF'。我查了一下IF語句的語法,我根本沒有看到問題是什麼。MySQL程序中意外的IF

create procedure spInsertAccount 
(
AccountID INT, 
InUse bit, 
IsBanned bit, 
IsPremium bit, 
IsGolden bit, 
Username VARCHAR(20), 
Password VARCHAR(20), 
Email VARCHAR(65), 
LoggedInID INT, 
CreateDate DATETIME 
) 

    SET @accountExists = (SELECT * FROM Accounts WHERE AccountID = @AccountID); 

    IF (accountExists > 0) THEN 

    INSERT IGNORE INTO Accounts(AccountID, InUse, IsBanned, IsPremium, IsGolden, Username, Password, 
         Email, LoggedInID, CreateDate 
         ) 
     values (@AccountID, @InUse, @IsBanned, @IsPremium, @IsGolden, @Username, @Password, 
       @Email, @LoggedInID, @CreateDate); 
     #where NOT EXISTS(SELECT * FROM Accounts WHERE AccountID = @AccountID); 

    END IF; 
+2

對於初學者來說,我認爲你缺少BEGIN語句 – 2013-04-27 23:57:31

回答

1

試試這個

還檢查了這裏http://net.tutsplus.com/tutorials/an-introduction-to-stored-procedures/

DELIMITER // 
create procedure `spInsertAccount` 
(
IN AccountID INT, 
IN InUse bit, 
IN IsBanned bit, 
IN IsPremium bit, 
IN IsGolden bit, 
IN Username VARCHAR(20), 
IN Password VARCHAR(20), 
IN Email VARCHAR(65), 
IN LoggedInID INT, 
IN CreateDate DATETIME 
) 
BEGIN 
    SET @accountExists = (SELECT * FROM Accounts WHERE AccountID = @AccountID); 

    if (accountExists > 0) THEN 
     INSERT IGNORE INTO Accounts(AccountID, InUse, IsBanned, IsPremium, IsGolden, Username, Password,Email, LoggedInID, CreateDate) 
     values (@AccountID, @InUse, @IsBanned, @IsPremium, @IsGolden, @Username, @Password, 
       @Email, @LoggedInID, @CreateDate); 
     #where NOT EXISTS(SELECT * FROM Accounts WHERE AccountID = @AccountID); 

    END IF; 
END //