sql >> Databasteknik >  >> RDS >> Mysql

Mysql lagrad procedur tar inte tabellnamnet som parameter

En SP kan inte optimeras med ett dynamiskt tabellnamn, så många DB:er, inklusive MySQL, tillåter inte att tabellnamn specificeras dynamiskt.

Ett sätt att kringgå detta är att använda 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$$


  1. PostgreSQL + Hibernate + Spring automatiskt skapa databas

  2. Tilldela xml som genereras av en while-loop till en variabel

  3. MySQL sorteringsordning efter matrisvärde

  4. Varför uppdaterades inte frågan efter att ha klickat på uppdateringsknappen?