ホームページ > データベース > mysql チュートリアル > 動的 SQL クエリの結果を MySQL ストアド プロシージャ変数に保存する方法

動的 SQL クエリの結果を MySQL ストアド プロシージャ変数に保存する方法

Mary-Kate Olsen
リリース: 2024-12-30 21:46:17
オリジナル
955 人が閲覧しました

How to Store Dynamic SQL Query Results in a MySQL Stored Procedure Variable?

MySQL ストアド プロシージャを使用して動的 SQL クエリの出力を変数に保存する

MySQL ストアド プロシージャでは、以下を実行する必要がある場合があります。動的クエリを実行し、出力をユーザー定義変数に保存します。これを実現する方法は次のとおりです。

CREATE PROCEDURE procedure_name(
  IN query_text TEXT,
  OUT output_variable TEXT
)
BEGIN
  SET output_variable = '';

  SET @sql = query_text;
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END
ログイン後にコピー

このプロシージャでは、実行される動的クエリを含む入力パラメータ query_text と、クエリの出力を保存する出力パラメータ Output_variable を宣言します。

次に、output_variable を空の文字列に設定し、PREPARE コマンドを使用して SQL ステートメントとして query_text を準備します。 EXECUTE ステートメントは準備されたステートメントを実行するために使用され、DEALLOCATE PREPARE はそれに関連付けられたリソースを解放するために使用されます。

例:

ダイナミックなステートメントがあるとします。次の出力を生成するクエリ:

SELECT CONCAT('Value 1: ', value1, ' | ', 'Value 2: ', value2) AS output
FROM table_name
WHERE id = ?
ログイン後にコピー

このクエリを実行し、出力を保存するプロシージャを作成できます。変数内:

CREATE PROCEDURE get_dynamic_output(
  IN input_id INT,
  OUT dynamic_output TEXT
)
BEGIN
  SET dynamic_output = '';

  SET @query = 'SELECT CONCAT('"'Value 1: '"', value1, '"" | '"', 'Value 2: '"', value2, '""') AS output FROM table_name WHERE id = ?';
  PREPARE stmt FROM @query;
  SET @id = input_id;
  EXECUTE stmt USING @id;
  DEALLOCATE PREPARE stmt;
END
ログイン後にコピー

このプロシージャを使用するには、input_id パラメータを目的の値に設定して実行できます:

CALL get_dynamic_output(1, @output_value);
SELECT @output_value;
ログイン後にコピー

これにより、動的クエリの出力が出力されます。単一のテキスト文字列として。

以上が動的 SQL クエリの結果を MySQL ストアド プロシージャ変数に保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート