MySQL的功能不能正常工作

问题描述:

我的数据库名字是dfeb和我有一个表命名invdt和列命名为batch_numberid。我想获得batch_number其中id = 59,用function.But错误时显示出来function does not existMySQL的功能不能正常工作

DELIMITER $$ 
CREATE 
FUNCTION `dfeb`.`get_quantity`(PID) 
RETURNS VARCHAR 
BEGIN 
DECLARE NAME_FOUND VARCHAR DEFAULT ""; 
SELECT `batch_number` INTO NAME_FOUND FROM `invdt` WHERE ID = PID; 
RETURN NAME_FOUND 
END$$ 

DELIMITER ; 

SELECT `get_quantity`(59) FROM `invdt` 

尝试:

DELIMITER $$ 

-- CREATE FUNCTION `dfeb`.`get_quantity`(PID) 
CREATE FUNCTION `dfeb`.`get_quantity`(PID INT) 
-- RETURNS VARCHAR 
RETURNS VARCHAR(200) 
BEGIN 
    -- DECLARE NAME_FOUND VARCHAR DEFAULT ""; 
    DECLARE NAME_FOUND VARCHAR(200) DEFAULT ""; 
    SELECT `batch_number` INTO NAME_FOUND FROM `invdt` WHERE ID = PID; 
    -- RETURN NAME_FOUND 
    RETURN NAME_FOUND; 
END$$ 

DELIMITER ; 

-- SELECT `get_quantity`(59) FROM `invdt` 
SELECT `dfeb`.`get_quantity`(59) FROM `invdt`; 

UPDATE

CREATE FUNCTION `dfeb`.`get_quantity`(PID INT) 
. 
. 
. 

-- SELECT `get_quantity`(59) FROM `invdt` 
SELECT `dfeb`.`get_quantity`(59) FROM `invdt`; 

或者

USE `dfeb`; 

CREATE FUNCTION `get_quantity`(PID INT) 
. 
. 
. 

SELECT `get_quantity`(59) FROM `invdt`; 
+0

是'dfeb'数据库名称正确,当创建函数它需要'schemaname'。 'functionname'或'dbname'.'functionname'? – Arulkumar

+0

@Arulkumar:查看更新的答案。 – wchiquito

+0

再次'SELECT \'get_quantity \'(59)FROM \'invdt \';'不会按照OP的帖子工作,希望它需要架构名称。 – Arulkumar