MySQL函数返回查询结果中的值

21
我想创建一个函数,使用查询计算一个值,但返回值时遇到问题:
简化后,我的查询如下:
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个回答

31

假设这些都是通用名称(table不会是一个好的表名),问题在于您不能使用==进行比较。您还缺少一些关键语法(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比较函数和运算符

相关问题:MYSQL中的单等号

函数帮助:http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm


是的,这只是一个通用的例子 :p。我已经进行了更正,但仍然出现语法错误。谢谢。 - Cesar
您还需要添加一个DECLARE语句(请参见更新的答案) - theChrisKent
添加了声明语句,去掉了'@'符号,并添加了一个"将数据选择到变量中"的语句。它正常工作了。谢谢。 - Cesar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接