システム変数とユーザー定義変数は、ストアドプログラムのコンテキストの外部で使用できるのと同様に、ストアドプログラム内で使用できます。 さらに、ストアドプログラムは DECLARE
を使用してローカル変数を定義でき、またストアドルーチン (プロシージャーおよびファンクション) は、そのルーチンとその呼び出し元の間で値を通信するパラメータを受け取るように宣言できます。
セクション13.6.4.1「ローカル変数 DECLARE ステートメント」で説明されているように、ローカル変数を宣言するには、
DECLARE
ステートメントを使用します。変数は、
SET
ステートメントを使用して直接設定できます。 セクション13.7.6.1「変数代入の SET 構文」を参照してください。クエリーからの結果は、
SELECT ... INTO
を使用するか、またはカーソルを開き、var_list
FETCH ... INTO
を使用することによってローカル変数に取得できます。 セクション13.2.10.1「SELECT ... INTO ステートメント」およびセクション13.6.6「カーソル」を参照してください。var_list
ローカル変数のスコープ、および MySQL があいまいな名前を解決する方法については、セクション13.6.4.2「ローカル変数のスコープと解決」を参照してください。
ストアドプロシージャーやストアドファンクションのパラメータまたはストアドプログラムのローカル変数に (たとえば、SET
ステートメントを使用して) 値 var_name
= DEFAULTDEFAULT
を割り当てることは許可されません。 MySQL 8.0 では、これにより構文エラーが発生します。