Что не так с запросом MySQL? - PullRequest
0 голосов
/ 12 апреля 2010

Я использую следующий запрос MySQL,

DELIMITER $$
DROP PROCEDURE IF EXISTS `allied`.`aboutus_delete`$$
CREATE DEFINER=`allied`@`%` PROCEDURE `aboutus_delete`(
IN p_Id int(11)
)
BEGIN
   if exists(   select aboutUsId 
                  from aboutus 
                 where aboutUsId=p_id 
                   and isDeleted=0
            )
      update aboutus set isDeleted=1 where aboutUsId=p_id
   else
      select 'No record to delete'
END$$
DELIMITER ;

Но я получаю эту ошибку, когда выполняю ее ...

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 
'update aboutus set isDeleted=1 where aboutUsId=p_id
else
   select 'No record to' at line 6

РЕДАКТИРОВАТЬ:

использование точки с запятой не работает,

if exists(select aboutUsId from aboutus where aboutUsId=p_id and 
 isDeleted=0) then
   update aboutus set isDeleted=1 where aboutUsId=p_id;
else
   select 'No record to delete';

Ответы [ 3 ]

2 голосов
/ 12 апреля 2010

Это другая проблема: вы можете немного оптимизировать эту процедуру. Зачем дважды нажимать на хранилище данных, когда будет делать один запрос? Просто установите для атрибута isDeleted значение 1 и впоследствии проверьте значение row_count.

BEGIN
  UPDATE aboutus SET isDeleted = 1 WHERE aboutUsId = p_id AND isDeleted = 0;
  IF (SELECT row_count()) <= 0 THEN
    SELECT 'No record to delete';
  END IF;
END
0 голосов
/ 12 апреля 2010

Наряду с точками с запятой и THEN, вам не хватает END IF для завершения оператора IF.

0 голосов
/ 12 апреля 2010

Вы пропустили 'THEN' в 'IF' ...

...