Mysql
 sql >> Base de données >  >> RDS >> Mysql

La procédure stockée MySQL ne prend pas le nom de la table comme paramètre

Un SP ne peut pas être optimisé avec un nom de table dynamique, c'est pourquoi de nombreuses bases de données, y compris MySQL, ne permettent pas de spécifier dynamiquement les noms de table.

Une solution consiste à utiliser 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$$