2011-02-09 17 views
10

Quiero crear una función que calcula un valor mediante una consulta y estoy teniendo un problema devolviendo el valor:función Mysql devolver un valor desde una consulta

acortados, mi consulta es:

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 

Obtengo un error de sintaxis SQL.

Error SQL (1064): Tiene un error en su sintaxis SQL;

Respuesta

19

Suponiendo que todos estos sean nombres genéricos (la tabla no será un buen nombre para la tabla), el problema es que no puede usar == para comparar. También le falta alguna sintaxis clave (DECLARAR, SELECCIONAR INTO, etc.).

Cambio a esta:

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

pregunta relacionada: Single Equals in MYSQL

Función de Ayuda: http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm

+0

Sí, es un ejemplo genérico: p. Haga la corrección, pero todavía estoy obteniendo la sintaxis errror. Gracias – Cesar

+0

También necesita agregar una declaración DECLARAR (ver respuesta actualizada) – theChrisKent

+0

Agregó la declaración de declarar, tomó la '@' y agregó una "seleccionar datos en var". Esta funcionando. Gracias. – Cesar

Cuestiones relacionadas