I need a procedure that verifies if a number is prime. The syntax appears to be fine, but a get the following error:
Query : CREATE PROCEDURE prime_number(IN n INT) BEGIN SET @prime = "Prime number"; SET @n_prime = "Not prime number"; SET @divider = …
Error Code : 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 ” at line 28
Here’s my code so far:
DELIMITER $
CREATE PROCEDURE prime_number(IN n INT)
BEGIN
SET @prime = "Prime number";
SET @n_prime = "Not prime number";
SET @divider = 0;
SET @i = 5;
IF n % 2 = 0 THEN
SELECT @n_prime;
ELSEIF (n < 2) OR ((n % 3) = 0) THEN /* Was using ELSE IF, separatedly*/
SELECT @n_prime;
ELSE
SET @root = SQRT(n);
WHILE @i <= @root && @divider = 0 DO
IF (n % @i) = 0 THEN
SET @divider = 1;
END IF;
SET @i = @i + 1;
END WHILE;
IF @divider = 1 THEN SELECT @n_prime;
ELSE SELECT @prime;
END IF;
END IF; /*Line 28*/
END $
DELIMITER ;
Any ideias why it’s happening?
Your problem is most likely
ELSE IF. That creates anotherIFstatement that requires anotherEND IF. You want to useELSEIFinstead.