Функция Mysql возвращает значение из запроса

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

Укороченный, мой запрос:

CREATE FUNCTION func01(value1 INT , monto DECIMAL (10,2)) RETURNS DECIMAL(10,2)
BEGIN
SET @var_name = 0;
select @var_name=if(value1 = 1,monto * table.divisa_dolar,table.monto *divisa_euro) from table where data_init = 1;
return @var_nam;
END

Я получаю синтаксическую ошибку SQL.

Ошибка SQL (1064): у вас есть ошибка в синтаксисе SQL;

Ответ 1

Предположим, что это все родовые имена (таблица не будет хорошим именем таблицы), проблема в том, что вы не можете использовать == для сравнения. Вам также не хватает ключевого синтаксиса (DECLARE, SELECT INTO и т.д.).

Изменить на это:

CREATE FUNCTION func01(value1 INT , monto DECIMAL (10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
  DECLARE var_name DECIMAL(10,2);
  SET var_name = 0;
  SELECT if(value1 = 1,monto *divisa_dolar,monto *divisa_euro) INTO var_name
    FROM table
    WHERE data_init = 1;
  RETURN var_name;
END

Функции и операторы сравнения MySQL

Связанный с нами вопрос: Single Equals в MYSQL

Справка по функциям: http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm