sql >> Database >  >> RDS >> Mysql

Mysql-opgeslagen procedure neemt de tabelnaam niet als parameter

Een SP kan niet worden geoptimaliseerd met een dynamische tabelnaam, dus veel DB's, inclusief MySQL, staan ​​niet toe dat tabelnamen dynamisch worden opgegeven.

Een manier om dit te omzeilen is om dynamische SQL te gebruiken.

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$$


  1. Het aantal betrokken rijen ophalen in een MySQL-update-instructie?

  2. update met join-instructie mysql?

  3. Kan geen JDBC-verbinding maken

  4. PHP MySQL - Voor elke 6 rijen een div invoegen?