2013-04-18 40 views
6

我遇到問題。我在MySQL中創建了一個返回String(varchar數據類型)的函數。錯誤代碼:1305 MySQL,函數不存在

這裏的語法:

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 ; 

當我打電話像call SafetyStockChecker(16,16)的功能,我得到這個錯誤:

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

有什麼不好的作用?

回答

9

這不是調用函數的正確方法。以下是調用函數的示例:

SELECT SafetyStockChecker(16,16) FROM TableName 

您現在的做法是調用STORED PROCEDURE。這就是爲什麼錯誤說:

PROCEDURE inv_sbmanis.SafetyStockChecker does not exist

因爲它正在尋找一個存儲過程,而不是一個函數。

2

您應該使用

SELECT SafetyStockChecker(16,16)