MySQL バージョン 5.0.13 以降では、ストアド プロシージャ内に動的 SQL を実装できます。
動的 SQL の構築ステートメント:
動的 SQL ステートメントを構築するには、CONCAT() 関数を使用して文字列を連結し、SQL ステートメントを動的に作成します。以下に例を示します:
SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
上の例では、@s に動的 SQL ステートメントが含まれます:
SELECT col FROM tbl
動的ステートメントの準備と実行:
動的 SQL ステートメントを構築したら、それを準備し、実行済み:
PREPARE stmt FROM @s; EXECUTE stmt;
準備済みステートメントの割り当て解除:
実行後、準備済みステートメントを解放するには割り当てを解除する必要がありますリソース:
DEALLOCATE PREPARE stmt;
制限事項:
動的 SQL はストアド プロシージャでサポートされていますが、関数やトリガーではサポートされていません。
例:
次のストアド プロシージャは、動的を示します。 SQL:
delimiter // CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64)) BEGIN SET @s = CONCAT('SELECT ',col,' FROM ',tbl ); PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt; END // delimiter ;
以上がMySQL ストアド プロシージャで動的 SQL を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。