IF
備考
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 (ブール条件)
BEGIN
SQL ステートメント
END
ELSE
BEGIN
SQL ステートメント
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;
関連項目