Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранената процедура на Mysql не приема името на таблицата като параметър

SP не може да бъде оптимизиран с динамично име на таблица, така че много DBs, включително MySQL, не позволяват имена на таблици да бъдат зададени динамично.

Един от начините за това е да използвате 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Знаци MySQL, UTF-8 и Emoji

  2. Правилно ли е да се сканира таблица в MySQL с помощта на SELECT * .. LiMIT start, count без клауза ORDER BY?

  3. Как да се свържа с локален хост с помощта на JDBC?

  4. Защо SQLAlchemy execute Update не работи

  5. Изчезват редовете на таблицата на Mysql DB