2011-02-09 80 views
10

返回一个值,我想创建使用查询,其计算值的函数,我有返回值的问题:的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语法错误;

回答

19

假设这些都是通用名称(表格不会是一个好的表名),问题是你不能使用==作为比较。您还缺少一些关键语法(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 Comparison Functions and Operators

相关问题:Single Equals in MYSQL

功能说明:http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm

+0

是的,它是一个普通的例子:对。进行更正,但我仍然得到语法错误。谢谢 – Cesar 2011-02-09 00:29:40