2011-02-09 82 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