简体   繁体   中英

Stored procedure MYSQL error

Having a few issues with running the below procedure over PHPMyAdmin, receiving the error;

"1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6"

The problem seems to be with the IF, the update syntax works on its own, the select within the if statement works on its own.

Any ideas??

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;

One major problem is that parameters to the stored procedure have the same names as columns. You should always prefix variable names with something. Your specific problem, I think, is that you want an exists in the if and a delimeter statement. I think this is closer to what you want:

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$$

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM