即使我尝试了很多方法,它仍然给我这个错误(光标或处理程序声明后的变量或条件声明 SQL语句)
sp 必须使用游标
CREATE PROCEDURE monthly_sum (IN cardId INT(36), IN monthN INT, OUT sumV float)
BEGIN
DECLARE cursor_1 CURSOR FOR
SELECT SUM(purchased.amountPurchased)
FROM purchased
WHERE MONTH(purchased.dateUsed) = monthN AND purchased.purchasedCardId = cardId AND DAY(purchased.dateUsed) <=10;
DECLARE cursor_2 CURSOR FOR
SELECT SUM(purchased.amountPurchased)
FROM purchased
WHERE MONTH(purchased.dateUsed) = monthN AND purchased.purchasedCardId = cardId AND DAY(purchased.dateUsed) <=20 AND DAY(purchased.dateUsed) >10;
DECLARE cursor_3 CURSOR FOR
SELECT SUM(purchased.amountPurchased)
FROM purchased
WHERE MONTH(purchased.dateUsed) = monthN AND purchased.purchasedCardId = cardId AND DAY(purchased.dateUsed) >20;
DECLARE percentage1, percentage2, percentage3 float default 0;
OPEN cursor_1;
FETCH cursor_1
INTO percentage1;
CLOSE cursor_1;
OPEN cursor_2;
FETCH cursor_2
INTO percentage2;
CLOSE cursor_2;
OPEN cursor_3;
FETCH cursor_3
INTO percentage3;
CLOSE cursor_3;
SET sumV = percentage1*0.01 + percentage2*0.02 + percentage1*0.03;
SELECT sumV;
END
预期产出前 10 天的 1%、后 10 天的 2%、当月其余天的 3% 之和
最佳答案
我添加了 DECLARE 百分比 1、百分比 2、百分比 3 float 默认 0;一开始就像 karmen 89 评论我一样,它起作用了
关于mysql - 游标或处理程序声明之后的变量或条件声明 SQL 语句 (mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54092864/