我可以在 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折扣”附近使用的正确语法。
我需要 DiscValue 和 DiscType 来进行不同的计算。
任何帮助将不胜感激
提前致谢。
请使用它:
BEGIN
IF test = true THEN
BEGIN
DECLARE ats_cursor CURSOR FOR SELECT distinct ats_id FROM ats_eb ats where ats.year = year and ats.edition_shortname = edition;
END;
ELSE
BEGIN
DECLARE ats_cursor CURSOR FOR SELECT distinct ats_id FROM ats_eb ats where ats.year = year and ats.edition_shortname = edition;
END;
END IF;
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)