2012-03-28 2 views
4

이 If 문을 작동 시키려고하지만, 원하는대로 할 수 없습니다. select @result를 수행하면 값 0을 얻습니다. 그런 다음 IF 문이 작동하지 않는 이유는 무엇입니까?mySQL If 문

SET @message = '((sometihng here))'; 
select LEFT(@message, 1) into @firstChar; 
select STRCMP(@firstChar,'(') into @result; 
IF (@result = 0) THEN 
SET @message = 'true'; 
//more selects and cals here; 
END IF; 
select @message; 

내가 진정한 가야하지만, 나는 그것이 나에게 오류가 표시되지 않습니다

SQL query: IF(@result =0) THEN SET @message = 'true';

MySQL은 말했다 :

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 'IF (@result = 0) THEN SET @message = 'true'' at line 1

답변

3

Max Mara가 지적했듯이 좋은 일이 일어났다. IF가 작동하지 않는 이유는 구문이 잘못 되었기 때문이 아니라 IF ... THEN과 같은 흐름 제어 함수가 저장 프로 시저 또는 함수 내에서만 유효하기 때문입니다. @TehShrike에 대한 감사의 말

2

IF. THEN .. MySQL의 ELSE 구문은 절차 코드 (저장된 precudures, 함수, 트리거)에서만 사용할 수 있지만 SELECT 문에서는 사용할 수 없습니다.

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 ; 
이하에서 보관 절차의 예에서 사용 된 ELSE IF