条件制御
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 つしか必要としません。