I am getting this error when I want to execute below query for creating function, I checked everything it seems that I can't find the issue:
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;
Can you please help me?
You have to finish END
with a semicolon:
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 ;