gpt4 book ai didi

mysql - 在选择查询中使用变量

转载 作者:行者123 更新时间:2023-11-29 23:19:11 25 4
gpt4 key购买 nike

我正在尝试从表中获取计数值,并使用存储过程中的 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”附近使用的正确语法

我使用 Select @sql; 进一步调试了我的存储过程,并惊讶地发现它返回 NULL

编辑 1: 变量昨天和昨天日期正确返回值,因此我确信这些变量没有问题。问题是由于totalRegister变量造成的

最佳答案

幸运的是,我通过使用点击和试用找到了解决方案。在 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;

上面的事情运作良好。不管怎样,感谢大家的贡献

关于mysql - 在选择查询中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com