код функции соответствует 1064 ошибка в MySQL 5.7.21

0
DELIMITER //
CREATE FUNCTION 'nvl'('expr1' text,'expr2' text) RETURNS text CHARSET utf8
BEGIN
     RETURN case when expr1 = '' or expr1 is NULL then expr2 ELSE expr1 end case
END ;
//
DELIMITER ;

все же, доклады:

ERROR 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "case END" в строке 3 '

Зачем? Я не могу понять...

Теги:

2 ответа

1

Когда вы говорите end case, вы используете синтаксис для оператора case. То, что вам нужно, - это выражение case, которое заканчивается только end.

  • 0
    я замечаю, что синтаксис case в 5.7 может разрешить случай когда search_condition ... в моем случае.
  • 0
    Это было только первое руководство, к которому я пришел. Любая версия, начиная с версии 5.0, должна распознавать такое же различие. Версия оператора не допускает использования голых выражений, а версия выражения не допускает использования голых выражений.
Показать ещё 1 комментарий
0

Удалите лишний "случай" в конце.

DELIMITER //
CREATE FUNCTION 'nvl'('expr1' text,'expr2' text) RETURNS text CHARSET utf8
BEGIN
     RETURN case when expr1 = '' or expr1 is NULL then expr2 ELSE expr1 end;
END ;
//
DELIMITER ;
  • 0
    ошибка все еще существует. я думаю, что синтаксис регистра в 5.7 корректен, он может быть завершен. dev.mysql.com/doc/refman/5.7/en/case.html
  • 0
    @JarodSun: существует другая ошибка. Это не то же самое. И нет, вы не можете использовать end case здесь.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню