MySQL では、ストアド プロシージャを使用して事前定義された SQL ステートメントを実行できます。一般的な要件の 1 つは、テーブル名をパラメーターとしてストアド プロシージャに渡し、異なるテーブルで動的に操作できるようにすることです。
クエリのリテラル名を使用するのではなく、テーブル名に変数を利用するには、次のようにします。これらの手順:
CREATE PROCEDURE `usp_SelectFromTables`( IN TableName VARCHAR(100) )
ここで、TableName は、プロシージャで使用するテーブル名を保持します。
実行中、パラメーター TableName は変数です。ただし、SQL ステートメントにはテーブル参照用の文字列が必要です。変数を文字列に変換するには、CONCAT() 関数を使用します。
MySQL のテーブル参照には通常、データベース名、ピリオド、テーブルが含まれます。名前。 CONCAT() または:
SET @sql_text = CONCAT('SELECT * FROM ', @TableName);
準備された SQL ステートメントを動的に実行するには、PREPARE および EXECUTE を使用します。
>PREPARE stmt FROM @sql_text; EXECUTE stmt;
次の例では、動的 SQL クエリが TableName、cname、および vname の値に基づいて構築されています:
SET @cname:='jello'; SET @vname:='dwb'; SET @sql_text = CONCAT('select concept_id,concept_name,',@vname,' from enc2.concept a JOIN enc2.ratings b USING(concept_id) where concept_name like (''%',@cname,'%'') and 3 is not null order by 3 asc'); PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt;
これらの手順に従うことで、変数を効果的に使用して MySQL でテーブル名を指定できます。ストアド プロシージャにより、柔軟性と再利用性が向上します。
以上がMySQL ストアド プロシージャのテーブル名に変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。