2016-05-29 158 views
0

我的數據庫名字是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` 

回答

0

嘗試:

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