MySQL では、ストアド プロシージャの外で変数を宣言し、while ループを使用することはできません。これは、これらの構造は BEGIN...END 句内で宣言する必要があり、ストアド プロシージャ、関数、トリガー、イベント内でのみ使用できるためです。
制限の克服
変数を宣言し、ストアド プロシージャの外部で while ループを使用する必要がある場合は、この機能をカプセル化する一時ストアド プロシージャを作成できます。以下に従うことができるテンプレートを示します:
<code class="sql">CREATE TEMPORARY PROCEDURE my_temp_proc() BEGIN DECLARE var1 INT; DECLARE var2 VARCHAR(255); WHILE var1 < 10 DO SET var2 = CONCAT(var2, 'Iteration ', var1, '\n'); SET var1 = var1 + 1; END WHILE; END</code>
使用法
一時ストアド プロシージャを実行し、宣言された変数にアクセスするには、次の手順を使用できます。
ストアド プロシージャを実行します:
<code class="sql">CALL my_temp_proc();</code>
INFORMATION_SCHEMA.ROUTINE_VARIABLES テーブルを使用して宣言された変数をクエリします:
<code class="sql">SELECT ROUTINE_NAME, VARIABLE_NAME, VARIABLE_TYPE, VARIABLE_VALUE FROM INFORMATION_SCHEMA.ROUTINE_VARIABLES WHERE ROUTINE_NAME = 'my_temp_proc';</code>
これにより、宣言された変数の値が出力されます。
以上がMySQL は変数を宣言し、ストアド プロシージャの外で While ループを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。