2013-10-25 3 views
-2

У меня есть этот запрос в моем приложении:MySQL Ошибка синтаксиса для IF ... INSERT INTO

string sql = @"UPDATE AccountGroup 
      SET IdGroup = @idGroup 
      WHERE IdAccount = @idAccount; 

      IF (ROW_COUNT() = 0) THEN 
       INSERT INTO AccountGroup (IdAccount, IdGroup) 
       VALUES (@idAccount, @idGroup); 
      END IF;" 

Что дает мне сообщение об ошибке:

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи 'IF (ROW_COUNT() = 0) THEN INSERT INTO AccountGroup (IdAccount, IdGroup)' в строке 1.

Что такое проблема ?

+8

Похоже, вы используете синтаксис SQL Server, и даже подумайте, что вы используете Microsoft SQL Server, когда база данных, на которой выполняется запрос, на самом деле является MySQL, которая является совершенно другой платформой от совершенно другого поставщика. –

+0

@AaronBertrand: Хороший улов. OP явно не заметил «MySQL» в сообщении об ошибке. :-) –

+0

@AaronBertrand Вы правы, что полностью пролетел над мной. Я изменил синтаксис, но теперь я не могу понять, что с ним не так. – idlackage

ответ

1

У меня нет сервера MySQL, чтобы проверить это. Тем не менее, возможно ли, что вы используете IF(), если хотите использовать IF?

Из documentation для IF()

ЕСЛИ (выражение1, выражение2, выражение3)

Если выражение1 ИСТИНА (выражение1 <> 0 и выражение1 <> NULL), то ЕСЛИ() возвращает expr2; в противном случае он возвращает expr3. IF() возвращает числовое или строковое значение, в зависимости от контекста, в котором он используется.

И от documentation для IF

IF search_condition THEN statement_list 
    [ELSEIF search_condition THEN statement_list] ... 
    [ELSE statement_list] 
END IF 

Что бы заставить меня думать, вы хотите, чтобы написать код, как что-то вроде

string sql = @"UPDATE AccountGroup 
      SET IdGroup = @idGroup 
      WHERE IdAccount = @idAccount; 

      IF ROW_COUNT() = 0 THEN 
       INSERT INTO AccountGroup (IdAccount, IdGroup) 
       VALUES (@idAccount, @idGroup); 
      END IF;" 
+0

Спасибо, это похоже на проблему. Тем не менее, я все еще получаю синтаксическую ошибку рядом с этой частью - какой бы случай это не могло быть написано в качестве примера? – idlackage

+0

Выполняет ли этот запрос то, что вы хотите - http://stackoverflow.com/questions/1218905/how-do-upup-dex-ex-in-services-in-m-not-aka-ups-or-merge-in-mysql , Если так, я проголосую, чтобы закрыть как обман. – dsolimano

+0

Это действительно так, спасибо! – idlackage

Смежные вопросы