2012-03-28 3 views
4

Я пытаюсь сделать это, если заявление работает, но я не могу заставить его делать то, что я хочу. Если я сделаю select @result, он даст мне значение 0, то почему оператор IF не работает?mySQL Если оператор

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

Как указал Макс Мара, это хорошая работа. Причина, по которой IF не работает, заключается не в том, что синтаксис неверен, а потому, что функции управления потоком, такие как IF ... ТОГДА действуют только внутри хранимых процедур или функций, все это благодаря @TehShrike

2

IF. . THEN .. Синтаксис ELSE в MySQL доступен только для процедурного кода (хранимые предписания, функции, триггеры ..), но не для операторов 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 ; 
Смежные вопросы