SQL 構文リファレンス : IF
 
このページをシェアする                  
IF
構文
IF (ブール条件)
BEGIN
SQL ステートメント
END
ELSE
BEGIN
SQL ステートメント
END
備考
IF ステートメントにより、条件の値に基づく条件付き実行を提供します。IF ... THEN ... ELSE ... END IF 構造は、2 つのステートメント ブロックのどちらに基づいて実行するかをフロー制御します。IF ... ELSE 構文も使用できます。
IF ステートメントは、ストアド プロシージャとトリガーの本体で使用できます。
IF ステートメントをネストできる数に制限はありませんが、クエリは通常どおり、合計長の制限やその他のアプリケーション制限の影響を受けます。
メモ: PSQL と T.SQL の構文の混合構文を使用することはできません。IF...THEN...ELSE...END IF 構文または IF...ELSE 構文のいずれかを使用できます。
IF または ELSE 条件で複数のステートメントを使用する場合は、BEGIN と END を使ってステートメント ブロックの始まりと終わりを示す必要があります。
次の例では、IF ステートメントを使用して、vInteger の値が正か負かによって変数 Negative を 1 または 0 に設定します。
IF (:vInteger < 0) THEN
  SET :Negative = '1';
ELSE
  SET :Negative = '0';
END IF;
============ 
次の例では、IF ステートメントを使用して、定義された条件(SQLSTATE = '02000')のループをテストします。この条件が満たされた場合、WHILE ループが終了します。
FETCH_LOOP:
WHILE (:counter < :NumRooms) DO
  FETCH NEXT FROM cRooms into :CurrentCapacity;
  IF (SQLSTATE = '02000') THEN
  LEAVE FETCH_LOOP;
  END IF;
  SET :counter = :counter + 1;
  SET :TotalCapacity = :TotalCapacity + :CurrentCapacity;
END WHILE;
============ 
IF(:vInteger >50)
  BEGIN
SET :vInteger = :vInteger + 1;
INSERT INTO test VALUES('Test');
  END;
ELSE
  SET :vInteger = :vInteger - 1;
関連項目
CREATE PROCEDURE
CREATE TRIGGER