条件制御

IF 文は、特定の条件に基づいてアクションを実行する場合に使用します。 NZPLSQL には、3 種類の形式の IF 文があります。
  • IF-THEN
  • IF-THEN-ELSE
  • IF-THEN-ELSE IF

すべての NZPLSQL IF 文には、対応する END IF 文が必要です。 ELSE-IF 文では、最初の IF と 2 番目 (ELSE IF) に 1 つずつ、合計 2 つの END IF 文が必要です。

IF-THEN ステートメント

IF-THEN 文は、IF 文の最も単純な形式です。 THEN と END IF の間に指定された文が、条件が TRUE の場合に実行されます。 その他の場合は、END IF に続く文が実行されます。 以下に例を示します。
IF v_user_id <> 0 THEN
    UPDATE users SET email = v_email WHERE user_id = v_user_id;
END IF;

IF-THEN-ELSE 文

IF-THEN-ELSE 文は、IF-THEN 条件が FALSE と評価された場合のために ELSE 分岐を追加したものです。 ELSE セクションには、実行する文を指定できます。 例:
IF parentid IS NULL or parentid = ''
THEN
    return fullname;
ELSE
    return hp_true_filename(parentid) || '/' || fullname;
END IF;

IF v_count > 0 THEN
    INSERT INTO users_count(count) VALUES(v_count);
    return 't';
ELSE
    return 'f';
END IF;
以下のように、IF 文をネストすることができます。
IF movies.genre = 'd' THEN
    film_genre := 'drama';
ELSE 
    IF movies.genre = 'c' THEN
        film_genre := 'comedy';
    END IF;
END IF;

IF-THEN-ELSE IF 文

"ELSE IF" 文を使用する場合、ELSE 文の内側に IF 文をネストしていることになります。 したがって、END IF 文は、ネストした IF ごとに 1 つと、親の IF-ELSE に 1 つ必要です。 例:
IF movies.genre = 'd' THEN
    film_genre := 'drama';
ELSE IF movies.genre = 'c' THEN
        film_genre := 'comedy';
    END IF;
END IF;
この形式は機能しますが、チェックする候補が多い場合には、少し冗長で、エラーを生じやすくなります。 そのため、以下のように、ELSIF や ELSEIF を使用した代替構文が提供されています。
IF movies.genre = 'd' THEN
    film_genre := 'drama';
ELSIF movies.genre = 'c' THEN
        film_genre := 'comedy';
ELSIF movies.genre = 'a' THEN
        film_genre := 'action';
ELSIF movies.genre = 'n' THEN
        film_genre := 'narrative';
ELSE 
-- An uncategorized genre form has been requested.
   film_genre := 'Uncategorized';
END IF;

IF-THEN-ELSIF-ELSE の形式は、1 つの文の中で多数の候補をチェックする必要がある場合に、柔軟性とコーディング・プロセスの容易さが得られます。 この形式は、ネストした IF-THEN-ELSE-IF-THEN コマンドと等価ですが、END IF 文を 1 つしか必要としません。