PL/SQLで条件に応じて異なる処理を実行したい場合、IF文を使用して条件分岐を行います。本記事では、PL/SQLでのIF文の基本的な使い方から応用まで、わかりやすく解説します。
IF文の基本構文
IF文は、与えられた条件が真か偽かを判定し、それに応じた処理を実行します。基本構文は以下の通りです。
IF 条件 THEN
-- 条件が真の場合に実行される処理
ELSIF 別の条件 THEN
-- 別の条件が真の場合に実行される処理
ELSE
-- どの条件にも該当しない場合に実行される処理
END IF;
この構文を使うことで、単純な条件分岐から複数の条件を扱う複雑な処理まで対応できます。
数値を使った条件分岐の例
例えば、テストの得点に応じてメッセージを表示する例を見てみましょう。
DECLARE
v_score NUMBER := 85;
BEGIN
IF v_score >= 90 THEN
DBMS_OUTPUT.PUT_LINE('優秀です。');
ELSIF v_score >= 70 THEN
DBMS_OUTPUT.PUT_LINE('合格です。');
ELSE
DBMS_OUTPUT.PUT_LINE('不合格です。');
END IF;
END;
このコードでは、変数v_scoreの値が条件に基づいて判定され、異なるメッセージが出力されます。
- v_scoreが90以上なら「優秀です。」と表示
- v_scoreが70以上90未満なら「合格です。」と表示
- v_scoreが70未満なら「不合格です。」と表示
複数の条件を組み合わせる場合
複数の変数や条件を組み合わせて、さらに詳細な条件分岐も可能です。以下は年齢と経験年数を基に条件分岐を行う例です。
DECLARE
v_age NUMBER := 25;
v_experience NUMBER := 3;
BEGIN
IF v_age > 30 AND v_experience >= 5 THEN
DBMS_OUTPUT.PUT_LINE('上級者です。');
ELSIF v_age <= 30 AND v_experience >= 3 THEN
DBMS_OUTPUT.PUT_LINE('中級者です。');
ELSE
DBMS_OUTPUT.PUT_LINE('初心者です。');
END IF;
END;
ここでは、年齢と経験年数を条件として使っています。
- 年齢が30歳以上で経験が5年以上の場合、「上級者です。」と表示
- 年齢が30歳以下で経験が3年以上の場合、「中級者です。」と表示
- それ以外は「初心者です。」と表示
IF文を使う際のポイント
- ELSIFで条件を追加: 必要に応じて、複数の条件を追加する際にELSIFを使用します。
- ELSEでその他の処理を指定: すべての条件に該当しない場合の処理を指定するためにELSEを使います。
まとめ
PL/SQLのIF文は、シンプルな条件分岐から複雑な条件の組み合わせまで柔軟に対応できる強力な構文です。この記事で紹介した例を参考に、条件に応じた処理を効率よく実装してみてください。