Mysql
 sql >> Database >  >> RDS >> Mysql

La stored procedure di MySQL non accetta il nome della tabella come parametro

Un SP non può essere ottimizzato con un nome di tabella dinamico, quindi molti DB, incluso MySQL, non consentono di specificare dinamicamente i nomi di tabella.

Un modo per aggirare questo è usare Dynamic SQL.

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc`(IN serviceName VARCHAR(10),IN newsInfoTable VARCHAR(100))
BEGIN                  
    SET @sql = CONCAT('SELECT COUNT(*) FROM ',newsInfoTable,' WHERE newsServiceName=?;'); 
    PREPARE s1 from @sql;
    SET @paramA = serviceName;
    EXECUTE s1 USING @paramA;
END$$