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.
Error : Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
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
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;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.