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 ストアードプロシージャを作成します。

MySQL の IF 文 1


compare ストアドプロシージャを実行して、アウトプット引数の result の中身を確認します。

CALL compare(1, 1, @result);
SELECT @result;

[実行結果]

MySQL の IF 文 2


CALL compare(2, 1, @result);
SELECT @result;

[実行結果]

MySQL の IF 文 3


CALL compare(1, 2, @result);
SELECT @result;

[実行結果]

MySQL の IF 文 4

IF 文で指定した通りに、インプット引数の x と y によって、result に文字が代入されていますね。


以上、MySQL の IF 文についてご説明しました。

© 2024 MySQL 入門