IF ステートメントは、基本的な条件ステートメントを構築するために使用されます。
IF ステートメントの構文は次のとおりです:
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
IF ステートメントには THEN、ELSE、ELSEIF 句を含めることができ、END IF で終了します。
指定された search_condition の計算結果がTrueの場合、対応する THEN または ELSEIF 句のステートメントリストが実行されます。一致する search_condition がない場合は、ELSE 句の statement_list が実行されます。
各 statement_list は1つ以上のSQLステートメントで構成されています。空の statement_list を使用することは許可されていません。
ストアドプログラム内の IF ... END IF ブロックは、セミコロン(;)で終了させる必要があります。他のフロー制御構文と同様に、IF ... END IF ブロックは、IF ステートメントを含む他の制御ステートメント内にネストすることができます。各 IF は、独自の END IF; で終了する必要があります。コードをインデントすることで、ネストされたフロー制御ブロックをより読みやすくすることができます。以下の例を参照してください:
obclient> DELIMITER //
obclient> CREATE FUNCTION comp_fuc (n INT, m INT)
RETURNS VARCHAR(50)
BEGIN
DECLARE x VARCHAR(50);
IF n = m THEN SET x = '等しい';
ELSE
IF n > m THEN SET x = '大きい';
ELSE SET x = '小さい';
END IF;
END IF;
SET x = CONCAT(n, ' ', x, ' ', m, '.');
RETURN x;
END //
Query OK, 0 rows affected
上記の例では、内部の IF ステートメントは、n が m と等しくない場合にのみ評価されます。