创建函数时 MariaDB 函数语法错误

MariaDB function syntax error when creating a function

我已经实现了这个功能,但无论我添加什么(分隔符),它仍然会抛出同样的错误。

CREATE FUNCTION getNumberOfBuyers(IN userId INT) RETURNS INT
BEGIN
   DECLARE numberOfBuyers INT DEFAULT 0;
   SELECT COUNT(*) INTO numberOfBuyers FROM buyers WHERE id = userId;
   RETURN numberOfBuyers;
END;

错误是:

[42000][1064] 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 'IN userId INT) RETURNS INT BEGIN DECLARE numberOfBuyers INT DEFAULT 0; ...' at line 1

无法在 mariadb 中将参数标记为输入参数。所以删除声明中的IN

CREATE FUNCTION getNumberOfBuyers(userId INT) RETURNS INT
BEGIN
   DECLARE numberOfBuyers INT DEFAULT 0;
   SELECT COUNT(*) INTO numberOfBuyers FROM buyers WHERE id = userId;
   RETURN numberOfBuyers;
END;

一般语法声明如下:

CREATE FUNCTION function_name [ (parameter datatype [, parameter datatype]) ]
RETURNS return_datatype

BEGIN

   declaration_section

   executable_section

END;