![](/img/trans.png)
[英]Prepared Statement Inside Stored Procedure Called by PHP Prepared Statement
[英]How to use Result of prepared statement in the stored procedure
我正在 Mysql 中创建一个存储过程,其中我使用以下准备好的语句从一个动态命名表中获取计数并尝试在 @a 中获取结果计数,但在运行其显示错误时。
错误:错误代码:1064 您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“NULL”附近使用的正确语法
SET prevDate=(CONCAT('details_',DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1
DAY),'%y%m%d')));
SET @qsql=CONCAT("SELECT COUNT(*) FROM ",prevDate," INTO @a");
PREPARE stmt FROM @qsql;
EXECUTE stmt;
SELECT @a AS detailcount ;
DEALLOCATE PREPARE stmt;
SET prevDate=(CONCAT('Subdetails_',DATE_FORMAT(DATE_SUB(CURDATE(),
INTERVAL 1 DAY),'%y%m%d')));
SET @qsql=CONCAT("SELECT COUNT(*) FROM ",prevDate," INTO @b");
PREPARE stmt FROM @qsql;
EXECUTE stmt;
SELECT @b AS Subdetails ;
DEALLOCATE PREPARE stmt;
SET totalcount=detailcount+Subdetails;
SELECT totalcount;
结果:获取totalcount=NULL , detailcount=NULL , Subdetails=Some value
这里的错误是什么?
执行两个准备好的查询后解除分配语句给出所需的结果。
SET prevDate=(CONCAT('details_',DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1
DAY),'%y%m%d')));
SET @qsql=CONCAT("SELECT COUNT(*) FROM ",prevDate," INTO @a");
PREPARE stmt FROM @qsql;
EXECUTE stmt;
SELECT @a AS detailcount ;
SET prevDate=(CONCAT('Subdetails_',DATE_FORMAT(DATE_SUB(CURDATE(),
INTERVAL 1 DAY),'%y%m%d')));
SET @qsql=CONCAT("SELECT COUNT(*) FROM ",prevDate," INTO @b");
PREPARE stmt FROM @qsql;
EXECUTE stmt;
SELECT @b AS Subdetails ;
DEALLOCATE PREPARE stmt;
SET totalcount=detailcount+Subdetails;
SELECT totalcount;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.