所以,我基本上有以下过程:
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 (用于管理数据库)的“查询”选项卡上运行它时,它给了我错误:
SQL错误(1064):您的SQL语法有错误;检查 对应于您的MariaDB服务器版本的手册 第4行“附近的语法
这是有史以来最无用的信息。我不知道语法有什么问题,因为此错误无济于事。
语法是否有问题? MariaDB上的文档对带有临时变量的存储过程没有帮助。
编辑:似乎这是HeidiSQL问题,而不是MariaDB,更改了问题标题。
答案 0 :(得分:0)
我使用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
尽管这可行,但我仍然想知道手写代码出了什么问题。