11

我有个问题。我在 MySQL 中创建了一个函数,它返回一个字符串(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
PROCEDURE inv_sbmanis.SafetyStockChecker 不存在
执行时间:00:00:00:000
传输时间:00:00:00:000
总时间:00:00:00:000

功能有什么问题?

4

2 回答 2

14

这不是调用函数的正确方法。下面是一个调用函数的例子:

SELECT SafetyStockChecker(16,16) FROM TableName

您现在正在做的方式是调用STORED PROCEDURE. 这就是为什么错误说:

过程 inv_sbmanis.SafetyStockChecker 不存在

因为它正在搜索存储过程而不是函数。

于 2013-04-18T08:26:19.390 回答
4

你应该使用

SELECT SafetyStockChecker(16,16)
于 2013-04-18T08:36:02.060 回答