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

मुझे एक एसक्यूएल वाक्यविन्यास त्रुटि मिलती है।

एसक्यूएल त्रुटि (1064): आपको अपने SQL वाक्यविन्यास में कोई त्रुटि है;

उत्तर

19

मान लें कि ये सभी सामान्य नाम हैं (तालिका एक अच्छी तालिका नाम नहीं होगी), समस्या यह है कि आप तुलना के लिए == का उपयोग नहीं कर सकते हैं। आप कुछ महत्वपूर्ण वाक्यविन्यास भी खो रहे हैं (डेक्लेयर, चयन करें, इत्यादि)।

यह करने के लिए परिवर्तित करें:

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

+0

आपको एक डेक्लेयर स्टेटमेंट जोड़ने की भी आवश्यकता है (अपडेटेड उत्तर देखें) – theChrisKent

+0

घोषित कथन जोड़ा गया, '@' निकाला और "var में डेटा का चयन करें" जोड़ा। यह काम कर रहा है। धन्यवाद। – Cesar

संबंधित मुद्दे