HeidiSQL不接受存储过程

时间:2019-05-13 07:59:27

标签: sql stored-procedures mariadb heidisql

所以,我基本上有以下过程:

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,更改了问题标题。

1 个答案:

答案 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

尽管这可行,但我仍然想知道手写代码出了什么问题。