ホームページ >データベース >mysql チュートリアル >MySQL ストアド プロシージャで動的 SQL を使用するにはどうすればよいですか?

MySQL ストアド プロシージャで動的 SQL を使用するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 17:50:09478ブラウズ

How Can I Use Dynamic SQL in MySQL Stored Procedures?

MySQL ストアド プロシージャでの動的 SQL の使用

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。