Я не могу создать функцию в версии mariadb: 10.1.37-MariaDB-0 + deb9u1 Debian 9.6
Новое в программировании mariadb / mysql.Я перемещаю данные электронной таблицы в базу данных.
Нет хранимых процедур или функций, и я использую учетную запись с полными привилегиями.Я заполняю таблицу компьютеров, которая должна ссылаться на запись магазина в таблице магазинов.В хранилище может быть несколько машин, поэтому машина не является полем в таблице хранилищ.
Я просто пытаюсь получить правильный синтаксис для создания функции, чтобы затем я мог пакетировать последовательность чисел.Первоначально это была большая серия операторов SELECT и IF, а сценарий задыхался от операторов IF.Я прочитал в чьем-то посте, что операторы IF могут использоваться только в функциях и процедурах.Это правда?
Ошибка, которую я получаю, используя 'SOURCE gen.mach.store.bat;'в интерактивном режиме или 'mysql -u fullpriv -pabc1234
ERROR 1064 (42000) at line 4 in file: 'gen.mach.store.bat': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'BEGIN
DECLARE tid MEDIUMINT;
SET tid:=-1 ;
SELECT tid:=id FROM stores WHER' at line 2
Query OK, 0 rows affected, 1 warning (0.00 sec)
код:
USE SWIMAT ;
DROP FUNCTION IF EXISTS sMachine;
DELIMITER $$
CREATE FUNCTION sMachine( sstore MEDIUMINT , smach MEDIUMINT )
BEGIN
DECLARE tid MEDIUMINT;
SET tid:=-1 ;
SELECT tid:=id FROM stores WHERE name="ChainX" AND number=sstore;
IF tid != -1 THEN
INSERT INTO machines(store,sn) VALUES (tid,smach);
END IF;
END
$$
DELIMITER ;
DROP FUNCTION IF EXISTS sMachine;
Если я изменяю Создать код на
CREATE AGGREGATE FUNCTION sMachine( sstore MEDIUMINT , smach MEDIUMINT )
, ошибка близка к '(sstore MEDIUMINT, smach MEDIUMINT)
Что-то не так с именем функции?Я несколько раз менял имя и повсеместно изменял пустое пространство.Я облажался с точкой с запятой.В какой-то момент я добавил оператор RETURNS с RETURN в функции.
Я опубликовал свою текущую работу, из-за отсутствия лучшего слова, версии.