sql >> Database teknologi >  >> RDS >> Mysql

Mysql-lagrede procedure tager ikke tabelnavn som parameter

En SP kan ikke optimeres med et dynamisk tabelnavn, så mange DB'er, inklusive MySQL, tillader ikke, at tabelnavne angives dynamisk.

En måde at undgå dette på er at bruge 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. Standardværdi i en kolonne, når der indsættes en ny række

  2. Brug PayPal Køb nu-formularen i php-galleriet, hjælp venligst

  3. Sådan finder du en streng i en streng i SQL Server

  4. Hvordan kan du bruge en postgres-forbindelsesstreng i pg_restore til at angive værten/databasen/brugernavnet/adgangskoden?