2013-04-18 9 views
6

Ho un problema. Ho creato una funzione in MySQL che restituisce una stringa (tipo di dati varchar).Codice errore: 1305 MySQL, la funzione non esiste

Ecco la sintassi:

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 ; 

Quando chiamo la funzione come call SafetyStockChecker(16,16), ottengo questo errore:

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

Cosa c'è di sbagliato con la funzione?

risposta

9

Non è il modo corretto per chiamare una funzione. Ecco un esempio per chiamare una funzione:

SELECT SafetyStockChecker(16,16) FROM TableName 

Il modo in cui si sta facendo ora è per chiamare un STORED PROCEDURE. Ecco perché l'errore dice:

PROCEDURE inv_sbmanis.SafetyStockChecker does not exist

perché sta cercando una procedura memorizzata e non una funzione.

2

Si dovrebbe usare

SELECT SafetyStockChecker(16,16) 
Problemi correlati