【发布时间】:2016-11-23 00:13:33
【问题描述】:
我的程序有问题。我尝试从销售表中获取值并使用它们进行查询。 过程如下:
DROP PROCEDURE IF EXISTS turnover;
DELIMITER $$
CREATE PROCEDURE turnover()
BEGIN
DECLARE col INT;
DECLARE q TEXT;
DECLARE i INT DEFAULT 0;
DECLARE m TEXT;
SET col = (SELECT count(DISTINCT article) FROM sales);
SET q = "SELECT article, ";
WHILE i < co DO
SET m = (SELECT DISTINCT month FROM sales LIMIT 1 OFFSET i);
SET q = q + "SUM(IF(month=" + m + ",value,NULL)) AS " + m;
IF i < (col - 1) THEN
SET q = q + ", ";
END IF;
SET i = i + 1;
END WHILE;
SET q = q + " FROM sales GROUP BY article";
EXECUTE q;
END$$
DELIMITER ;
CALL turnover();
我收到错误:
错误代码:1292。截断不正确的 DOUBLE 值:',value,NULL)) AS '
我怎样才能让它工作?
谢谢。
【问题讨论】:
-
不确定这是否是您的问题,但这条线
WHILE i < co DO应该是WHILE i < col DO吗?当您尝试将字符串与查询中某处的 int 进行比较时,通常会发生该错误。 -
这很难说。为什么不记录生成的语句?顺便说一句,这可能甚至不需要存储过程。
-
这个问题与我的 MySQL Workbench 有什么关系?
-
@e4c5 这是一个公平的评论。出于教育目的,无论它可能是XY Problem,我都在下面的答案中扑通一声。
标签: mysql sql mysql-error-1292