2011-02-09 40 views
10

tôi muốn tạo một hàm mà tính toán một giá trị sử dụng một truy vấn và tôi đang gặp một vấn đề trả lại giá trị:Mysql hàm trả về một giá trị từ một truy vấn

ngắn lại, truy vấn của tôi là:

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 

Tôi gặp lỗi cú pháp SQL.

Lỗi SQL (1064): Bạn có lỗi trong cú pháp SQL;

Trả lời

19

Giả sử đây là tất cả các tên chung chung (bảng sẽ không phải là tên bảng tốt), vấn đề là bạn không thể sử dụng == để so sánh. Bạn cũng thiếu một số cú pháp chính (DECLARE, SELECT INTO, v.v.).

Thay đổi thế này:

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

Câu hỏi liên quan: Single Equals in MYSQL

Chức năng Trợ giúp: http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm

+0

Vâng, một ví dụ chung của nó: p. Thực hiện điều chỉnh nhưng tôi vẫn nhận được lỗi errror. Cảm ơn – Cesar

+0

Bạn cũng cần phải thêm câu lệnh DECLARE (xem câu trả lời được cập nhật) – theChrisKent

+0

Đã thêm tuyên bố khai báo, đánh dấu '@' và thêm "dữ liệu được chọn vào var". Nó hoạt động. Cảm ơn. – Cesar

Các vấn đề liên quan