我有以下 MYSQL 存储过程,
CREATE PROCEDURE DWH.product_stats(OUT int_return INT)
BEGIN
DECLARE vc_sku,
vc_prod_id VARCHAR(100);
DECLARE int_views,
int_fav,
int_month,
int_year,
not_found INT DEFAULT 0;
DECLARE cur_sku CURSOR FOR
SELECT product_id, sku FROM product LIMIT 0,10;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1;
OPEN cur_sku;
REPEAT
FETCH cur_sku INTO vc_prod_id, vc_sku;
IF NOT not_found THEN
-- Number of Views and Favs
SELECT COUNT(CASE WHEN event_type_id = 1 THEN 1 END) AS views,
COUNT(CASE WHEN event_type_id = 5 THEN 1 END) AS favs,
MONTH(logged_at) AS log_mon,
YEAR(logged_at) AS log_year INTO int_views, int_fav, int_month, int_year
FROM report_event
WHERE object_id = vc_prod_id
GROUP BY log_mon, log_year
ORDER BY log_year, log_mon;
-- DEBUG
SELECT vc_sku, vc_prod_id, int_views, int_fav, int_month, int_year ;
END IF;
UNTIL not_found END REPEAT ;
CLOSE cur_sku;
END;
如果我正常运行,则没有错误。我得到结果。但我在 MYSQL 存储过程中使用它。然后,当我尝试运行存储过程时,它给了我这个错误,说“结果由多行组成”。这是因为我有一个针对月份和年份的 GROUP BY,它将为一个产品生成多个记录。但这就是我想要的功能。处理这个问题的最佳方法是什么?