所以,我基本上有这样的程序:
CREATE PROCEDURE NotificationLog(IN `Timestamp` BIGINT, IN UnitID INT, IN Content VARCHAR(50), IN `LEVEL` TINYINT, IN Solved INT, IN Sector TINYINT)
MODIFIES SQL DATA
BEGIN
DECLARE newId INT;
INSERT INTO `logs` VALUES (NULL, `Timestamp`, `UnitID`);
SET newId = LAST_INSERT_ID();
INSERT INTO notificationlogs VALUES (newId, Content, `Level`, Solved, Sector);
END;但是有一个错误,当我在Heidi SQL 10的Query选项卡上运行它(我使用它来管理DB)时,它会给出错误:
server (1064):您的SQL语法出现了错误;请检查与MariaDB服务器版本对应的手册,以获得“第4行”附近的正确语法。
这是有史以来最无用的信息。我不知道语法中有什么问题,因为这个错误没有说明什么。
语法上有什么问题吗?MariaDB上的文档对于带有临时变量的存储过程没有那么大的帮助。
编辑:似乎这是一个HeidiSQL问题,而不是MariaDB,更改了问题标题。
发布于 2019-05-13 13:07:47
我使用了HeidiSQL的GUI工具来创建这个过程,它生成了以下代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `CreateNotificationLog`(
IN `Timestamp` BIGINT,
IN `UnitID` INT,
IN `Content` VARCHAR(50),
IN `Level` TINYINT,
IN `Solved` BIT,
IN `Sector` TINYINT
)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE newId INT;
INSERT INTO `logs` VALUES (NULL, `Timestamp`, `UnitID`);
SET newId = LAST_INSERT_ID();
INSERT INTO notificationlogs VALUES (newId, Content, `Level`, `Solved`, Sector);
END虽然这样做有效,但我仍然想知道我的手写代码中有什么问题。
https://stackoverflow.com/questions/56108000
复制相似问题