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 ;
我正在尝试编写一个 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 ;