我有一个存储例程,用于为我的应用程序创建一个新的桌面登录令牌,用于验证用户是否必须重新登录(无论如何这不重要)。
重要的是我正在使用的SQL似乎不喜欢我。
我只使用过T-SQL,因为我是一名专注于数据库SSMS的.NET开发人员,但这次我愚蠢地决定使用没有XD经验的MySQL
以下是代码:
CREATE PROCEDURE `insertNewToken`(IN `Username` VARCHAR(150), IN `Token` VARCHAR(500))
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
IF EXISTS(SELECT *
FROM desktopTokens
WHERE desktopTokens.AssignedUsername = Username) THEN
BEGIN
UPDATE desktopTokens
SET desktopTokens.TokenValue = Token
WHERE desktopTokens.AssignedUsername = Username
END
ELSE
BEGIN
INSERT INTO desktopTokens
VALUES
(Username, Token)
END
我一直在第2行和第15行遇到错误,但不明白为什么!
注意:令牌和用户名是SP变量
答案 0 :(得分:0)
尝试:
DELIMITER $$
CREATE PROCEDURE `insertNewToken`(
IN `Username` VARCHAR(150),
IN `Token` VARCHAR(500)
)
BEGIN
IF EXISTS(SELECT *
FROM desktopTokens
WHERE desktopTokens.AssignedUsername = Username) THEN
UPDATE desktopTokens
SET desktopTokens.TokenValue = Token
WHERE desktopTokens.AssignedUsername = Username
;
ELSE
INSERT INTO desktopTokens
VALUES
(Username, Token)
;
END IF;
END $$
DELIMITER ;