2014-03-18 171 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 $$' –