2013-04-18 7 views
6

Tôi gặp sự cố. Tôi tạo ra một chức năng trong MySQL mà trả về một String (loại dữ liệu varchar).Mã lỗi: 1305 MySQL, Chức năng không tồn tại

Đây là cú pháp:

DELIMITER $$ 
USE `inv_sbmanis`$$ 
DROP FUNCTION IF EXISTS `SafetyStockChecker`$$ 

CREATE DEFINER=`root`@`localhost` FUNCTION `SafetyStockChecker` 
(jumlah INT, safetystock INT) 
RETURNS VARCHAR(10) CHARSET latin1 
BEGIN 
DECLARE statbarang VARCHAR(10); 
IF jumlah > safetystock THEN SET statbarang = "Stabil"; 
ELSEIF jumlah = safetystock THEN SET statbarang = "Perhatian"; 
ELSE SET statbarang = "Kritis"; 
END IF; 
RETURN (statbarang); 
END$$ 
DELIMITER ; 

Khi tôi gọi hàm như call SafetyStockChecker(16,16), tôi nhận được lỗi này:

Query : call SafetyStockChecker(16,16)
Error Code : 1305
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000

Có gì sai với chức năng?

Trả lời

9

Đó không phải là cách chính xác để gọi hàm. Dưới đây là ví dụ để gọi hàm:

SELECT SafetyStockChecker(16,16) FROM TableName 

Cách bạn đang làm bây giờ là gọi số STORED PROCEDURE. Đó là lý do tại sao lỗi nói:

PROCEDURE inv_sbmanis.SafetyStockChecker does not exist

vì tìm kiếm thủ tục được lưu trữ chứ không phải chức năng.

2

Bạn nên sử dụng

SELECT SafetyStockChecker(16,16)