sql >> データベース >  >> RDS >> Mysql

Mysqlストアドプロシージャはパラメータとしてテーブル名を取りません

    SPは動的なテーブル名で最適化できないため、MySQLを含む多くのDBは、テーブル名を動的に指定することを許可していません。

    これを回避する1つの方法は、動的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. 指定された名前の列を含むすべてのテーブルを検索します-MSSQLServer

    2. SQLPlusAUTO_INCREMENTエラー

    3. PostgreSQLのさまざまなスキャン方法の概要

    4. ユーザー'root'@'localhost'のアクセスが拒否されたまま-ターミナル、Mac