|
IF ステートメントにより、条件の値に基づく条件付き実行を提供します。IF ... THEN ... ELSE ... END IF 構造は、2 つのステートメント ブロックのどちらに基づいて実行するかをフロー制御します。IF ... ELSE 構文も使用できます。
IF ステートメントは、ストアド プロシージャとトリガーの本体で使用できます。
IF ステートメントをネストできる数に制限はありませんが、クエリは通常どおり、合計長の制限やその他のアプリケーション制限の影響を受けます。
メモ
Pervasive PSQL と T.SQL を含んでいる混合構文は使用できません。IF...THEN...ELSE...END IF 構文または IF...ELSE 構文のいずれかを使用できます。
IF または ELSE 条件で複数のステートメントを使用する場合は、BEGIN と END を使ってステートメント ブロックの始まりと終わりを示す必要があります。
次の例では、IF ステートメントを使用して、vInteger の値が正か負かによって変数 Negative を 1 または 0 に設定します。
次の例では、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;
|