为什么在MySQL中定义我的函数时我的WHERE子句不起作用?

时间:2017-12-03 19:41:42

标签: mysql sequelpro

任何人都可以帮助我理解为什么当我运行以下内容时:

DELIMITER //
CREATE FUNCTION dbo.Profit (P_ProductID int, P_VendorID int, P_SellPrice decimal (12,4))
RETURNS decimal (12,4)
DETERMINISTIC
BEGIN
    DECLARE p_profit decimal (12,4)
    SET p_profit = P_SellPrice - Cost FROM VendorProduct
    WHERE ProductID = P_ProductID AND VendorID = P_VendorID
    RETURN p_profit
END //
DELIMITER;

我收到错误:" [查询1中的错误]您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在#SET; SET p_profit = P_SellPrice附近使用正确的语法 - Cost FROM VendorProduct     在哪里ProductID = P_Produc'在第6行 执行停止了!"

我目前正在使用Sequel Pro,只是想学习如何创建功能。

2 个答案:

答案 0 :(得分:0)

单独的命令之间应该有一个分隔符,例如DECLARE ...和SET ...行。

答案 1 :(得分:0)

以下结果为我工作。我得到了雷蒙德的帮助,然后在这个论坛上得到了一些其他问题。感谢所有花了一些时间在这里做出回应和帮助的人,让我走上正确的解决之道:

 DELIMITER $$
    CREATE FUNCTION Profit (P_ProductID int, P_VendorID int, P_SellPrice decimal (12,4))
    RETURNS decimal (12,4)
    NOT DETERMINISTIC
    BEGIN
        DECLARE p_profit decimal (12,4);
        SELECT DISTINCTROW P_SellPrice - Cost INTO p_profit FROM VendorProduct 
        WHERE ProductID = P_ProductID AND VendorID = P_VendorID;
        RETURN p_profit;
    END$$
    DELIMITER ;