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
上記の例では、n が m と等しくない場合にのみ、内部の IF 文が評価されます。