MySQL でユーザー定義定数を作成する
MySQLでは、ユーザ変数を使用して定数の機能をシミュレートできます。ユーザ変数の値はセッション期間中変更しません。
定数を定義するには、SET ステートメントを使用して値をユーザー変数に代入できます。たとえば、MY_CONSTANT という名前の定数を定義し、値を 10 に設定するには、次のステートメントを実行します:
SET @MY_CONSTANT = 10;
続いて、定数としてクエリの際に@MY_CONSTANTを使用できます。例:
my_table から my_column が @MY_CONSTANT と一致する行をすべて選択する
ユーザー変数の名前は「@」記号で始まる必要があることに注意してください。また、ユーザー変数のスコープは現在のセッションのみに限定されます。セッションを閉じたり、MySQLサーバーに再接続したりすると、ユーザー変数はリセットされます。
また、定数はストアドプロシージャを使って定義することもできます。 ストアドプロシージャ内では、DECLARE文を使用してBEGINとENDの間にローカル変数を定義し、定数にその値を設定します。 例:
PROCEDURE my_procedure() を作成する
ネイティブに日本語で言い換えると、
定数 my_constant を 10 に初期化して宣言します。
SELECT * FROM my_table WHERE my_column = ‘my_constant’;
その文を日本語に翻訳します。
上の例では、my_constant は局所変数として定義され、値に 10 が設定されてます。その後、クエリ内で my_constant は定数として使用されています。このストアドプロシージャは、my_procedure() を呼び出して実行できます。
いずれの方法を使用する場合でも、ユーザー変数を設定したりストアドプロシージャを定義したりすることで、定数の機能をエミュレートできます。