gpt4 book ai didi

mysql - MYSQL存储过程错误

转载 作者:行者123 更新时间:2023-11-30 00:31:22 25 4
gpt4 key购买 nike

通过 PHPMyAdmin 运行以下过程时遇到一些问题,收到错误;

“1064 - 您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,了解第 6 行 '' 附近使用的正确语法”

问题似乎出在 IF 上,更新语法独立工作,if 语句中的选择独立工作。

有什么想法吗?

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;

最佳答案

一个主要问题是存储过程的参数与列具有相同的名称。您应该始终为变量名称添加前缀。我认为您的具体问题是您希望在 ifdelimeter 语句中存在 exists 。我认为这更接近你想要的:

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

关于mysql - MYSQL存储过程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22490725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com