2011-11-20 2 views
0

숫자가 소수인지 확인하는 절차가 필요합니다. 구문은 괜찮을 것 같습니다,하지만 다음과 같은 오류 얻을 :중첩 된 IF 문의 구문 오류

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

여기 내 코드는 지금까지의 : 왜 무슨 일이 일어나고

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 ; 

모든 ideias를?

+0

28 줄을 알려주시겠습니까? 아니면 모두 세어 봐야할까요? – Gabe

+0

죄송합니다. 나는 –

답변

0

문제는 대부분 ELSE IF입니다. 그러면 또 다른 IF 문이 만들어지고 다른 문에는 END IF이 필요합니다. 대신 ELSEIF을 사용하고 싶습니다.

+1

행에 표시를 포함 할 것입니다. 당신에게는 세 번째 실수가 있습니다. – Gabe

+0

그것은 효과가있다! 감사! SQL은 제 기본 언어가 아니며 여전히 배우고 있습니다. –