首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HeidiSQL不接受存储过程

HeidiSQL不接受存储过程
EN

Stack Overflow用户
提问于 2019-05-13 07:59:26
回答 1查看 668关注 0票数 0

所以,我基本上有这样的程序:

代码语言:javascript
复制
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,更改了问题标题。

EN

回答 1

Stack Overflow用户

发布于 2019-05-13 13:07:47

我使用了HeidiSQL的GUI工具来创建这个过程,它生成了以下代码:

代码语言:javascript
复制
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

虽然这样做有效,但我仍然想知道我的手写代码中有什么问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56108000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档