简体   繁体   English

如何在存储过程中使用准备好的语句的结果

[英]How to use Result of prepared statement in the stored procedure

I am creating one Stored Procedure in Mysql , In which i am using below prepared statement for getting count from one dynamic named table and trying to get result count in @a but while running its showing error.我正在 Mysql 中创建一个存储过程,其中我使用以下准备好的语句从一个动态命名表中获取计数并尝试在 @a 中获取结果计数,但在运行其显示错误时。

Error : Error Code : 1064 You have an error in your SQL syntax;错误错误代码:1064 您的 SQL 语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1检查与您的 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;

Result: Getting totalcount=NULL , detailcount=NULL , Subdetails=Some value结果:获取totalcount=NULLdetailcount=NULLSubdetails=Some value

What is error here?这里的错误是什么?

Deallocating Statement after executing both prepared Queries Gives desired Result.执行两个准备好的查询后解除分配语句给出所需的结果。

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM