質問

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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top