MySQL の IF 文
ここでは MySQL の IF 文についてご説明します。
MySQL の IF 文の使い方
MySQL では、ストーアドプログラム内のフロー制御で IF 文を使って、指定した条件が True の時に指定したステートメントを実行することができます。
IF 文の基本的な構文は次の通りです。
IF 条件文1 THEN ステートメント1
[ELSEIF 条件文2 THEN ステートメント2]
[ELSEIF 条件文3 THEN ステートメント3]
...
[ELSE ステートメントN]
END IF
まず、IF の後の条件文1 が True であれば、ステートメント1 が実行され、その後の条件文は評価されずに終わります。
条件文1 が False の時は、次の ELSEIF の条件文2 を評価し、True であれば、ステートメント2 が実行され、その後の条件文は評価されずに終わります。
このように順番に条件文を評価していって、どの条件文も True にならなければ、ELSE のステートメントN が実行されます。
ELSEIF と ELSE はオプショナルです。
それでは、IF 文を実際に使ってみましょう。
今回は IF 文を使って、引数として渡した x と y を比較し、比較の結果をアウトプット引数として返すストアードプロシージャを作ります。
DROP PROCEDURE IF EXISTS compare;
DELIMITER //
CREATE PROCEDURE compare (
x INT,
y INT,
OUT result VARCHAR(20)
)
BEGIN
IF x = y THEN
SET result = 'x と y は同じ。';
ELSEIF x > y THEN
SET result = 'x は y より大きい。';
ELSE
SET result = 'x は y より小さい。';
END IF;
END//
DELIMITER ;
10 行目~16 行目で IF 文を使っています。
まず 10 行目の IF の後の x = y が評価され true の時は 11 行目の 'x と y は同じ。' が result に代入されます。
x = y が False の時は 12 行目の ELSEIF の x > y が評価され、True の時は 13 行目の 'x は y より大きい。' が result に代入されます。
x > y が False の時は ELSE のステートメントが実行されるので 'x は y より小さい。' が result に代入されます。
上のクエリーを実行して、compare ストアードプロシージャを作成します。
compare ストアドプロシージャを実行して、アウトプット引数の result の中身を確認します。
CALL compare(1, 1, @result);
SELECT @result;
[実行結果]
CALL compare(2, 1, @result);
SELECT @result;
[実行結果]
CALL compare(1, 2, @result);
SELECT @result;
[実行結果]
IF 文で指定した通りに、インプット引数の x と y によって、result に文字が代入されていますね。
以上、MySQL の IF 文についてご説明しました。