2010-11-27 3 views
1

mySql db에 대해 SQLYog에서 if else 문을 사용하여 간단한 저장 프로 시저를 만들려고합니다. 이왜 단순하지 않을까요? ELSE 문이 mySql에서 작동하는 경우

CREATE PROCEDURE p(IN Number INT) 

IF NUMBER = 1 THEN 
SELECT * FROM tblProduct WHERE ProductID = Number 
ELSE SELECT * FROM tblProduct WHERE ProductId = 2 
END IF 

를 작동하지 않는 이유는 사람이 좀 도와하고 말할 수 있다면 나는 감사하겠습니다 제가 간단 뭔가 바라고 있어요 그래서 나는 MySQL의 구문 지나치게 익숙하지 않아요하지만 난 그냥 볼 수 없습니다 나 어디서 잘못 될지. 읽어 주셔서 감사합니다. 내가 실행하려고 할 때

나는 다음을 얻을 :

오류 코드 : 1064 당신은 당신의 SQL 구문에 오류가 있습니다 ; 'ELSE SELECT * FROM tblProduct where intProductId = 2 where intProductId = 2'근처에서 사용할 올바른 구문에 대해서는 해당 MySQL 서버 버전에 해당하는 설명서를 확인하십시오.

답변

3

MySQL의 문장은 세미콜론으로 구분됩니다. 그들과 절차를 만들려면, 당신은 약간의 트릭과 같이 수행

DELIMITER // 

CREATE PROCEDURE p(IN Number INT) 
BEGIN 
    IF NUMBER = 1 THEN 
     SELECT * FROM tblProduct WHERE ProductID = Number; 
    ELSE 
     SELECT * FROM tblProduct WHERE ProductId = 2; 
    END IF; 
END // 

DELIMITER ; 

체크 아웃 경우/다른 사람에 대한 더 많은 정보를위한 documentation.

+0

우수함이 작동합니다. 귀하의 빠른 답변 주셔서 감사합니다. – Chris

0

귀하의 선택 진술 후. 또한 프로 시저 본문 주위에 BEGIN 및 END가 필요합니다. 절차의 정확한 구문에 대한 많은 예제는 the manual을 참조하십시오.

0

IF ELSE 문은 저장 프로 시저에서 항상 사용되며 단순 선택 쿼리에서는 트리거되지 않습니다. 그리고 ELSE 또는 경우 키워드가 항상

올바른 구문 아래 query.Like 앞에 새로운 라인에 있지 쓰기 :

DELIMITER // 

CREATE PROCEDURE NAME(IN Number INT) 
BEGIN 
    IF roll= 1 THEN 
     SELECT * FROM table1 WHERE id = roll; 
    ELSE 
     SELECT * FROM table2 WHERE id = 2; 
    END IF; 
END // 

DELIMITER ; 

잘못된 구문 :

DELIMITER // 

CREATE PROCEDURE NAME(IN Number INT) 
BEGIN 
    IF roll= 1 THEN SELECT * FROM table1 WHERE id = roll; 
    ELSE SELECT * FROM table2 WHERE id = 2; 
    END IF; 
END // 

DELIMITER ; 
관련 문제