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)エラーが発生します。

クエリ : call 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 に答える