MySQL 错误 1415 (0A000):不允许 return 函数的结果集

MySQL ERROR 1415 (0A000): Not allowed to return a result set from a function

我正在尝试编写一个 mysql 函数,它从不同的 table 获取数据并将其存储到变量中。但是我得到的错误是, 错误 1415 (0A000):不允许 return 来自函数的结果集

请帮助我....我的代码如下所示,

delimiter //
CREATE FUNCTION FUN_test(productId INT,quantity INT) RETURNS DOUBLE 
BEGIN
   DECLARE discountPer DOUBLE DEFAULT 0;
   DECLARE unitPrice DOUBLE;
   DECLARE _discountId INT DEFAULT 0;
   DECLARE _lowerLimit INT DEFAULT 0;
   DECLARE _higherLimit INT DEFAULT 0;

   SELECT @unitPrice := `SellingUnitPrice` FROM `TBL_PRODUCT_MASTER` WHERE `Id` = productId;


SELECT @discountPer := discDetail.`DiscountPercentage`, @_discountId := disc.Id, @_lowerLimit := discDetail.LowerLimit, @_higherLimit = discDetail.HigherLimit FROM `TBL_DISCOUNT_DETAIL` AS discDetail , `TBL_DISCOUNT` AS disc, TBL_PRODUCT_DISCOUNT AS prodDisc WHERE disc.`DiscountStartDate` < NOW() AND disc.`DiscountEndDate` > NOW() AND disc.`SchemeType` = 'AMOUNT' AND discDetail.DiscountId = disc.Id AND prodDisc.productId = productId AND prodDisc.discountId = disc.Id AND prodDisc.`IsEnabled` = 1 AND disc.`IsEnabled` = 1 AND (quantity * unitPrice) >= discDetail.LowerLimit and ((quantity * unitPrice) <= discDetail.HigherLimit);

  RETURN discountPer;
END//
delimiter ;

试试下面的 sql。

delimiter //
CREATE FUNCTION FUN_test(productId INT,quantity INT) RETURNS DOUBLE 
BEGIN
   DECLARE discountPer DOUBLE DEFAULT 0;
   DECLARE unitPrice DOUBLE;
   DECLARE _discountId INT DEFAULT 0;
   DECLARE _lowerLimit INT DEFAULT 0;
   DECLARE _higherLimit INT DEFAULT 0;

   SELECT `SellingUnitPrice` INTO @unitPrice FROM `TBL_PRODUCT_MASTER` WHERE `Id` = productId;

SELECT  discDetail.`DiscountPercentage` , disc.Id INTO @discountPer, @_discountId FROM `TBL_DISCOUNT_DETAIL` AS discDetail , `TBL_DISCOUNT` AS disc, TBL_PRODUCT_DISCOUNT AS prodDisc WHERE disc.`DiscountStartDate` < NOW() AND disc.`DiscountEndDate` > NOW() AND disc.`SchemeType` = 'AMOUNT' AND discDetail.DiscountId = disc.Id AND prodDisc.productId = productId AND prodDisc.discountId = disc.Id AND prodDisc.`IsEnabled` = 1 AND disc.`IsEnabled` = 1 AND (quantity * unitPrice) >= discDetail.LowerLimit and ((quantity * unitPrice) <= discDetail.HigherLimit);


  RETURN discountPer;
END//
delimiter ;