MySQL 创建函数时出错

MySQL Error When Creating Function

当我想执行以下创建函数的查询时出现此错误,我检查了所有似乎找不到问题的地方:

MySQL said: Documentation #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSEIF price > 1000 THEN BEGIN SET last3 = SUBSTRING(price, -3); ' at line 18

DELIMITER $$


CREATE FUNCTION GetPrice(number decimal(10,2), profit decimal (10,2)) RETURNS INT
    DETERMINISTIC
BEGIN
    DECLARE price int;
    DECLARE last3 int;
    DECLARE rootn int;
    SET price = CEIL(number + (number * profit /100));
    IF price < 1000 THEN
    BEGIN
      IF (price > 0 and price <= 500) THEN
      SET price = 500;
      ELSEIF (price >500 and price <= 750) THEN
      SET price = 750;
      ELSEIF (price >750 and price < 1000) THEN
      SET price = 1000;
      END IF;
    END
    ELSEIF price > 1000 THEN
    BEGIN
      SET last3 = SUBSTRING(price, -3);
      SET rootn = price-last3;
      IF (last3 >= 0 and price <= 100) THEN
      SET last3 = 0;
      ELSEIF (last3 > 100 and price <= 350) THEN
      SET last3 = 250;
      ELSEIF (last3 > 350 and price <= 600) THEN
      SET last3 = 500;
      ELSEIF (last3 > 600 and last3 <= 850) THEN
      SET last3 = 750;
      ELSEIF (last3 > 850 and price <= 1000) THEN
      SET last3 = 1000;
      END IF;
      SET price = rootn + last3;
    END
    ELSEIF price = 10000 THEN
    SET price = 1000;
    END IF;

 RETURN (price);
END$$
DELIMITER;

你能帮帮我吗?

你必须用分号结束 END:

DELIMITER //
CREATE FUNCTION `GetPrice`(number decimal(10,2), profit decimal (10,2)) RETURNS int(11)
    DETERMINISTIC
BEGIN
    DECLARE price int;
    DECLARE last3 int;
    DECLARE rootn int;
    SET price = CEIL(number + (number * profit /100));
    IF price < 1000 THEN
    BEGIN
      IF (price > 0 and price <= 500) THEN
      SET price = 500;
      ELSEIF (price >500 and price <= 750) THEN
      SET price = 750;
      ELSEIF (price >750 and price < 1000) THEN
      SET price = 1000;
      END IF;
    END;                              -- here
    ELSEIF price > 1000 THEN
    BEGIN
      SET last3 = SUBSTRING(price, -3);
      SET rootn = price-last3;
      IF (last3 >= 0 and price <= 100) THEN
      SET last3 = 0;
      ELSEIF (last3 > 100 and price <= 350) THEN
      SET last3 = 250;
      ELSEIF (last3 > 350 and price <= 600) THEN
      SET last3 = 500;
      ELSEIF (last3 > 600 and last3 <= 850) THEN
      SET last3 = 750;
      ELSEIF (last3 > 850 and price <= 1000) THEN
      SET last3 = 1000;
      END IF;
      SET price = rootn + last3;
    END;                                   -- and here
    ELSEIF price = 10000 THEN
    SET price = 1000;
    END IF;

 RETURN (price);
END//
DELIMITER ;

SQL Fiddle