2011-02-09 8 views
10

voglio creare una funzione che calcola un valore utilizzando una query e sto avendo un problema restituendo il valore:funzione di Mysql restituendo un valore da una query

accorciato, la mia domanda è:

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 

Viene visualizzato un errore di sintassi SQL.

Errore SQL (1064): si è verificato un errore nella sintassi SQL;

risposta

19

Supponendo che si tratti di nomi generici (la tabella non sarà un buon nome di tabella), il problema è che non è possibile utilizzare == per il confronto. Manca anche qualche sintassi della chiave (DECLARE, SELECT INTO, ecc.).

Cambio a questo:

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

questione connessa: Single Equals in MYSQL

Funzione Aiuto: http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm

+0

Sì, è un esempio generico: p. Apporta la correzione ma sto ancora ricevendo l'errror della sintassi. Grazie – Cesar

+0

È inoltre necessario aggiungere un'istruzione DECLARE (vedere la risposta aggiornata) – theChrisKent

+0

Aggiunta la dichiarazione di dichiarazione, eliminato "@" e aggiunto un "seleziona dati in var". Sta funzionando. Grazie. – Cesar