ここではORACLE社が提供するPL/SQL言語のIF文で条件分岐する方法を紹介しています。
IF文の書き方
IF文の基本構文は次の通りです。
条件式1の結果がTRUEの場合、処理1が実行されます。
ELSIFを追記することで、複数の条件式を指定することが出来ます。
いずれの条件にも一致しない場合に実行する処理はELSEの後に書きます。
最後にEND IF;でIF文を終了させます。
IF 条件1 THEN 実行する処理1;
[ ELSIF 条件2 THEN 処理2; ]
[ ELSE 処理3; ]
END IF;
IF文のサンプル
1つの条件式だけを書く
1つの条件式だけを書くパターンです。
IF文はELSIF、ELSEを省略することで、ある条件と一致する場合だけ処理をする条件分岐をさせることが出来ます。
DECLARE
i NUMBER := 1;
BEGIN
IF i = 1 THEN
DBMS_OUTPUT.PUT_LINE('〇');
END IF;
END;
〇
PL/SQLが実行されました(90 msec.)
1つの条件式の中に複数の条件を書く
ANDやORの論理演算子を使うことで1つの条件式の中に複数の条件を書くことが出きます。
論理演算子は↓で紹介していますので参考にしてください。
>>PL/SQLで使える演算子まとめ
DECLARE
i NUMBER := 1;
BEGIN
IF i = 0 OR i = 1 THEN
DBMS_OUTPUT.PUT_LINE('〇');
END IF;
END;
〇
PL/SQLが実行されました(6 msec.)
複数の条件式を書く
ELSIFを使うことで複数の条件式を書くことが出来ます。
DECLARE
i NUMBER := 1;
BEGIN
IF i = 0 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSIF i = 1 THEN
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
×
PL/SQLが実行されました(6 msec.)
次のプログラムのように条件式は2個、3個と追加することが出来ます。
DECLARE
i NUMBER := 3;
BEGIN
IF i = 0 THEN
DBMS_OUTPUT.PUT_LINE(0);
ELSIF i = 1 THEN
DBMS_OUTPUT.PUT_LINE(1);
ELSIF i = 2 THEN
DBMS_OUTPUT.PUT_LINE(2);
ELSIF i = 3 THEN
DBMS_OUTPUT.PUT_LINE(3);
END IF;
END;
3
PL/SQLが実行されました(22 msec.)
どの条件にも一致しない場合の処理を書く
ELSEを使うことで、いずれの条件にも一致しない場合に実行する処理を書くことが出来ます。
DECLARE
i NUMBER := 1;
BEGIN
IF i = 0 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
×
PL/SQLが実行されました(6 msec.)
IF文をネストして書く
IF文の中に更にIF文をネストして書くことが出来ます。
DECLARE
i NUMBER := 1;
BEGIN
IF i >= 0 THEN
DBMS_OUTPUT.PUT_LINE('〇');
IF i = 1 THEN
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END IF;
END;
〇
×
PL/SQLが実行されました(6 msec.)