Mysql Генерация простой хранимой функции - PullRequest
0 голосов
/ 17 октября 2019

Я около часа пытался заставить простую хранимую функцию работать в MySQL. Я сделал ниже простой пример, и я не уверен, что с ним не так.

CREATE FUNCTION hello(id INT) 
RETURNS VARCHAR
BEGIN
    RETURN 'Works';
END;

hello(2);

Я получаю следующую ошибку:

1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с «НАЧАЛО ВОЗВРАТА» «Работает»;END 'в строке 3

Я почти уверен, что это "тупой" вопрос, но я не являюсь sql-парнем и отчаянно должен собрать набор функций для создания пользовательского отчета

1 Ответ

4 голосов
/ 17 октября 2019

VARCHAR не является допустимым типом данных: вам нужно указать его длину, например VARCHAR(5):

DELIMITER //
CREATE FUNCTION hello(id INT) RETURNS VARCHAR(5)
BEGIN
    RETURN 'Works';
END;
//

Также обратите внимание, что ваша существующая функция может быть упрощена следующим образом:

CREATE FUNCTION hello(id INT) RETURNS VARCHAR(5)
    RETURN 'Works';

Ключевое слово BEGIN вступает в действие, когда функция содержит составных характеристик , таких как объявления, циклы и т. Д. Кроме того, как прокомментировал Рэймонд Нейланд, нет необходимости указывать DELIMITER, так как в функции есть один оператор.

Ссылка: MySQL CREATE PROCEDURE и CREATE FUNCTION Синтаксис

...