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