sql >> Databáze >  >> RDS >> Mysql

Uložená procedura Mysql nebere jako parametr název tabulky

SP nelze optimalizovat pomocí dynamického názvu tabulky, takže mnoho databází, včetně MySQL, neumožňuje dynamické zadávání názvů tabulek.

Jedním ze způsobů, jak to obejít, je použití dynamického 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. Omezení vyloučení na sloupci bitstring s bitovým operátorem AND

  2. Hodnoty Postgres ORDER BY v seznamu IN pomocí Rails Active Record

  3. PL/SQL silný referenční kurzor s uživatelem definovaným datovým typem záznamu

  4. Počáteční situace s oracle (podkladové dotazy)