MySQL сервер не создает хранимую процедуру через phpmyAdmin - PullRequest
1 голос
/ 04 июня 2011
delimiter //
create procedure rankPagesLive()
BEGIN 
    SET @r=0;
    UPDATE pageslive SET Rank= @r:= (@r+1) ORDER BY fan_count DESC;
END //
delimeter ;

Ошибка '# 1064 - у вас есть ошибка в ваш синтаксис SQL; проверьте руководство, которое соответствует вашему серверу MySQL версия для правильного использования синтаксиса рядом с разделителем // создать процедуру rankPagesLive () НАЧАЛО SET @ r = 0 'в строке 1


Что не так?

Ответы [ 3 ]

2 голосов
/ 04 июня 2011

Последняя строка должна быть:

delimiter ;
0 голосов
/ 05 июня 2011

Проблема была с phpmyAdmin, а не с кодом SQL, delimiter идентификатор не разрешен с помощью SQL-запроса (возможно, только на моем сервере),

После того, как я вошел на сервер MySQL по SSH -работает просто отлично.

Спасибо за вклад.

0 голосов
/ 04 июня 2011

Вы можете использовать один запрос таким образом, как этот

update pageslive as p
inner join (
 select @r:=@r+1 as rn,id
    from pageslive,(select @r:=0) as r order by fan_count desc
     ) as t
 on p.id = t.id
 set rank = rn

, но ИМХО, я бы не стал хранить вычисляемое поле в таблице.Вы всегда можете получить это значение с помощью простого выбора.

...