1

Тема: Помогите записать процедуру

Столкнулся с такой проблемой уже второй раз, в первый раз проблема была решена вставкой в поле Разделитель помимо ";" символа - "//" теперь при переустановке бд немогу записать процедуру выдает ошибку - "Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.
ERROR: Неизвестная пунктуация @ 30 .........." точно знаю что проблема связана с полем разделитель, но что туда надо вставить непомню... вот сама процедура -

DROP FUNCTION `transliterate`//
CREATE DEFINER=`admin`@`localhost` FUNCTION `transliterate`( str TEXT) RETURNS text CHARSET cp1251
    DETERMINISTIC
    SQL SECURITY INVOKER
BEGIN
declare str2 varchar(2);
declare str3 text;
declare len int(11);
declare i int(11);
set str3 = '';
set i = 1;
set len = length(str);
while i <= len do
  set str2 = elt(
    instr(
      ' ,./АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя[]{}\\"',
      substr(str,i,1)
    ),
    '_','','','','a','a','b','b','v','v','g','g','d','d','e','e','jo','jo','zh','zh',
    'z','z','i','i','j','j','k','k','l','l','m','m','n','n','o','o','p','p','r','r',
    's','s','t','t','u','u','f','f','h','h','c','c','ch','ch','sh','sh','sch','sch',
    '','','y','y','','','e','e','yu','yu','ya','ya','','','','','',''
  );

  if str2 is null then
     set str2 = substr(str,i,1);
  end if;
  set str3 = concat(str3,str2);
  set i = i + 1;
end while;

return lower(str3);

END

2

Re: Помогите записать процедуру

В поле разделителя введите два слеша (//), и обязательно на последней строке добавьте два слеша после END, чтобы было так: END //

3

Re: Помогите записать процедуру

Hanut сказал:

В поле разделителя введите два слеша (//), и обязательно на последней строке добавьте два слеша после END, чтобы было так: END //

непомогло выдает ошибку -
Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.

ERROR: Неизвестная пунктуация @ 30
STR: //
SQL: DROP FUNCTION `transliterate`//DROP FUNCTION `transliterate`//DROP FUNCTION `transliterate`//


SQL-запрос:

DROP FUNCTION `transliterate`//

Ответ MySQL: 

#1305 - FUNCTION maket1.transliterate does not exist

4

Re: Помогите записать процедуру

Попробуйте так:

DROP FUNCTION IF EXISTS `transliterate`//

И используйте здесь двойные кавычки:

"admin"@"localhost"

5

Re: Помогите записать процедуру

Hanut сказал:

Попробуйте так:

DROP FUNCTION IF EXISTS `transliterate`//

вот это помогло проблема решена, спасибо  Hanut.