Ошибка № 1064 при создании функции в MySQL - PullRequest
0 голосов
/ 17 апреля 2020

друзей.

Я пытаюсь создать функцию в MySQL, используя этот скрипт:

CREATE FUNCTION CurrentMemoDepartment(MID INT)
RETURNS INT
BEGIN
  DECLARE DeptID INT;
  SET DeptID = 0;
  SELECT TOP 1 TDeptID INTO DeptID FROM Transactions WHERE MemoID = MID ORDER BY ID DESC;
  RETURN DeptID;
END

, но он говорит:

1064 - У вас есть ошибка в вашем SQL синтаксисе; проверьте руководство, соответствующее вашей MySQL версии сервера, на предмет правильного синтаксиса для использования рядом с '' в строке 4

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Функция одного оператора не нуждается в BEGIN-END, промежуточных переменных, повторной проверке DELIMITER.

И MySQL использует LIMIT, а не TOP n.

CREATE FUNCTION CurrentMemoDepartment(MID INT)
RETURNS INT
RETURN SELECT TDeptID 
       FROM Transactions 
       WHERE MemoID = MID 
       ORDER BY ID DESC
       LIMIT 1;
1 голос
/ 17 апреля 2020

ИСПОЛЬЗУЙТЕ РАЗДЕЛИТЕЛЬ для объявления

как

DELIMITER $$
CREATE FUNCTION CurrentMemoDepartment(MID INT)
RETURNS INT
BEGIN
  DECLARE DeptID INT;
  SET DeptID = 0;
  SELECT TDeptID INTO DeptID FROM Transactions WHERE MemoID = MID ORDER BY ID DESC LIMIT 1;
  RETURN DeptID;
END$$
DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...