我有问题。我在MySQL中创建了一个函数,它返回一个String(varchar数据类型)。
这是语法:
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)
的函数时,我收到此错误:
查询:致电SafetyStockChecker(16,16)
错误代码:1305
程序inv_sbmanis.SafetyStockChecker不存在
执行时间:00:00:00:000
转机时间:00:00:00:000
总时间:00:00:00:000
该功能出了什么问题?
答案 0 :(得分:11)
这不是调用函数的正确方法。以下是调用函数的示例:
SELECT SafetyStockChecker(16,16) FROM TableName
您现在的做法是拨打STORED PROCEDURE
。这就是错误说明的原因:
程序inv_sbmanis.SafetyStockChecker不存在
因为它正在搜索存储过程而不是函数。
答案 1 :(得分:2)
你应该使用
SELECT SafetyStockChecker(16,16)