如何在存储过程中使用准备语句的Result


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=NULLdetailcount=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 ;       

        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;