【发布时间】:2013-06-03 07:59:13
【问题描述】:
我可以在 if 语句中声明光标吗?
如果可能的话,我该怎么做?
因为我只是做了这样的光标
CREATE FUNCTION `fn_test`(
ProductID BIGINT(20)
)
RETURNS DECIMAL(10,2)
BEGIN
DECLARE PrductDiscValue DECIMAL(10, 2);
DECLARE DiscType INT(1);
DECLARE DiscValue DESIMAL(10,2);
IF ProductID != 0 THEN
SET PrductDiscValue = (SELECT Discountvalue, DiscountType FROM discount WHERE FIND_IN_SET(ProductID,DiscIDs);
END IF;
RETURN ProductDiscountValue(1);
但这不起作用。所以,我做了以下
IF ProductID != 0 THEN
DECLARE PrductDiscValue CURSOR FOR SELECT Discountvalue, DiscountType FROM discount WHERE FIND_IN_SET(ProductID,DiscIDs;
END IF;
OPEN ProductDiscountValue;
FETCH ProductDiscountValue INTO DiscValue, DiscType;
RETURN DiscValue;
END
这给了我错误::
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 16 行的“DECLARE ProdDiscValue CURSOR FOR SELECT Discountvalue, DiscountType FROM discount”附近使用正确的语法。
我需要 DiscValue 和 DiscType 进行不同的计算。
任何帮助将不胜感激
提前致谢。
【问题讨论】:
标签: php mysql sql-server database