2014-03-18 169 views
0

在PHPMyAdmin上運行以下過程時遇到一些問題,接收到錯誤;存儲過程MYSQL錯誤

「1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的第6行使用‘’附近正確語法手冊」

這個問題似乎是與如果更新語法獨立工作,則if語句中的select可以獨立工作。

任何想法??

CREATE PROCEDURE Get_SessionCookie(
sessionID varchar(50), 
cookieID varchar(50) 
) 

IF (SELECT 1 = 1 FROM `SessionCookie` WHERE SessionID = sessionID AND CookieID = cookieID AND SessionExpiry < NOW()) 

UPDATE SessionCookie 
SET SessionExpiry = NOW() + INTERVAL 60 MINUTE 
WHERE SessionID = sessionID AND CookieID = cookieID; 

SELECT 'True' FROM SessionCookie; 

ELSE 

SELECT 'False' FROM SessionCookie; 

回答

0

一個主要問題是存儲過程的參數與列的名稱相同。你應該總是前綴變量名稱的東西。我認爲你的具體問題是你需要if中的existsdelimeter聲明。我認爲這更接近你想要的:

delimiter $$ 

CREATE PROCEDURE Get_SessionCookie (
    var_sessionID varchar(50), 
    var_cookieID varchar(50) 
) 
BEGIN 
    IF exists (SELECT 1 
       FROM `SessionCookie` 
       WHERE SessionID = var_sessionID AND 
         CookieID = var_cookieID AND 
         SessionExpiry < NOW() 
      ) 

     UPDATE SessionCookie 
      SET SessionExpiry = NOW() + INTERVAL 60 MINUTE 
      WHERE SessionID = var_sessionID AND CookieID = var_cookieID; 

     SELECT 'True' FROM SessionCookie; 

    ELSE SELECT 'False' FROM SessionCookie; 
    END IF 
END$$ 
+0

我在我的phpmyadmin版本中找到我也必須添加'DELIMITER;'AFTER'END $$' –