ホームページ >データベース >mysql チュートリアル >MySQL ストアド プロシージャ内でダイナミック SQL を構築して使用するにはどうすればよいですか?

MySQL ストアド プロシージャ内でダイナミック SQL を構築して使用するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-23 07:19:17708ブラウズ

How Can I Build and Use Dynamic SQL within MySQL Stored Procedures?

MySQL ストアド プロシージャでのダイナミック SQL の構築

MySQL 5.0.13 で導入されたダイナミック SQL により、ストアド プロシージャが実行時に 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 ;

説明:

  • 定義@s 変数を使用して動的 SQL ステートメントを保存します。
  • PREPARE ステートメントで動的 SQL ステートメントの実行を準備します。
  • EXECUTE を使用して準備済みステートメントを実行します。
  • DEALLOCATE PREPARE を使用して準備済みステートメントの割り当てを解除します。

例:

指定された列から特定の列を選択する場合テーブル:

CALL dynamic('employees', 'salary');

注:

関数またはトリガーでは動的 SQL はサポートされていません。詳細については、MySQL のドキュメントを参照してください。

以上がMySQL ストアド プロシージャ内でダイナミック SQL を構築して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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