HeidiSQL не принимает хранимую процедуру - PullRequest
0 голосов
/ 13 мая 2019

Итак, у меня в основном есть эта процедура:

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 голосов
/ 13 мая 2019

Я использовал инструмент GUI HeidiSQL для создания процедуры, и он сгенерировал мне следующий код:

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

Хотя это работает, я все же хотел бы знать, что не так в моем рукописном коде.

...