2013-04-18 16 views
6

Mam problem. Stworzyłem funkcję w MySQL, która zwraca String (typ danych varchar).Kod błędu: 1305 MySQL, funkcja nie istnieje

Oto składnia:

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 ; 

Kiedy wywołać funkcję jak call SafetyStockChecker(16,16), otrzymuję ten błąd:

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

Co się stało z funkcją?

Odpowiedz

9

To nie jest poprawny sposób wywoływania funkcji. Oto przykład, aby wywołać funkcję:

SELECT SafetyStockChecker(16,16) FROM TableName 

Sposób robisz teraz jest na wywołanie STORED PROCEDURE. Dlatego błąd mówi:

PROCEDURE inv_sbmanis.SafetyStockChecker does not exist

ponieważ szuka procedury przechowywanej, a nie funkcji.

2

Należy użyć

SELECT SafetyStockChecker(16,16) 
Powiązane problemy