Я пытаюсь создать SP в mysql / mariadb с объявленной переменной внутри - но я не вижу, что с ней не так!?!
DROP PROCEDURE IF EXISTS UpdateReceiverDevice;
DELIMITER $$
CREATE PROCEDURE `UpdateReceiverDevice`(IN `deviceIdentifier` VARCHAR(45), IN `deviceName` VARCHAR(45), IN `deviceLocation` VARCHAR(45), IN `informations` TEXT) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER
BEGIN
DECLARE receiverDeviceId AS INT(11) DEFAULT 0
SET receiverDeviceId = (SELECT ID FROM ReceiverDevice WHERE DeviceIdentifier = deviceIdentifier);
IF (receiverDeviceId > 0) BEGIN
UPDATE ReceiverDevice SET Informations = informations WHERE ID = receiverDeviceId;
ELSE
INSERT INTO ReceiverDevice (DeviceName, DeviceLocation, DeviceIdentifier, Informations) VALUES(deviceName, deviceLocation, deviceIdentifier, informations);
END IF
END $$
DELIMITER ;
MySQL возвращает эту ошибку:
Ein oder mehrere Fehler sind aufgetreten während Ihre Anfrage verarbeitet wurde:
Die folgende Abfrage ist fehlgeschlagen: "ПРОЦЕДУРА СОЗДАНИЯ UpdateReceiverDevice
(IN deviceIdentifier
VARCHAR (45), IN deviceName
VARCHAR (45), IN deviceLocation
VARCHAR (45), IN informations
TEXT) НЕ ДЕТЕРМИНИСТИЧЕСКИЕ ИЗМЕНЕНИЯ SQL" DATA SQL SECURITY DEFINER DECLARE ASD INT INT (11) SET receiveDeviceId = (SELECT ID FROM ReceiverDevice WHERE DeviceIdentifier = deviceIdentifier) ЕС. Информация) ЗНАЧЕНИЯ (имя устройства, расположение устройства, идентификатор устройства, информация) END IF "
MySQL meldet: # 1064 - Фелер в синтаксисе SQL. Bitte die korrekte Синтаксис im Handbuch nachschlagen bei 'ОБЪЯВЛЯЕТ приемникDeviceId КАК INT (11) УСТАНОВИТЬ ССЫЛКА ПРИБОРА = (ВЫБРАТЬ ID ОТ Re' в Цайле 1
Это мой сервер:
- Тип сервера: MariaDB
- Server-Version: 10.3.11-MariaDB-1: 10.3.11 + maria ~ bionic - mariadb.org бинарный дистрибутив
- Protokoll-версия: 10
- Server-Zeichensatz: UTF-8 Unicode (utf8)