我正在尝试从表中获取计数值并使用存储过程中的select语句将其存储在变量中。但是当我使用以下行的状态时
DECLARE totalRegister INTEGER;
SET @sqlstmt = CONCAT('SELECT COUNT(DISTINCT(msisdn)) INTO ', totalRegister, ' FROM sm_history.svc_mgmt_', @yesterdayMonth,' WHERE action_type = 1 AND DATE(created) = ', yesterday);
PREPARE statement FROM @sqlstmt;
EXECUTE statement;
DEALLOCATE PREPARE statement;
我在调用存储过程时遇到以下错误
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“NULL”附近使用正确的语法
我使用选择@sql; 进一步调试了我的存储过程,并惊讶地看到它返回NULL
编辑1:昨天和昨天的变量正确返回值,所以我确信这些变量没有问题。问题是由于totalRegister变量
答案 0 :(得分:0)
幸运的是,我通过使用点击和试用获得了解决方案。而不是在CONCAT函数中使用totalRegister作为变量,而是将其替换为@totalRegister,这导致存储过程正常工作。
DECLARE totalRegister INTEGER;
SET @sqlstmt = CONCAT('SELECT COUNT(DISTINCT(msisdn)) INTO @totalRegister FROM sm_history.svc_mgmt_',@yesterdayMonth ,' WHERE action_type = 1 AND DATE(created) = ', "'", yesterday, "'");
PREPARE statement FROM @sqlstmt;
EXECUTE statement;
DEALLOCATE PREPARE statement;
select @totalRegister;
以上的事情很好。无论如何,感谢所有的贡献