IF-THEN-ELSIF-ELSEは、1つのステートメントで多くの選択肢をチェックする方法を提供します。 正式には、入れ子になったIF-THEN-ELSE-IF-THEN文と同等ですが、必要なEND IFは1つだけです。
IFブール式THEN
ステートメント
[ELSIFブール式THEN]
ステートメント
[ELSIFブール式THEN]
ステートメント] ...]
[ELSE
ステートメント]
エンドIF; 次の例では、IF-THEN-ELSIF-ELSEステートメントを使用して、25,000米ドルの報酬範囲で従業員の数をカウントします。
DECLARE
v_empno emp.empno%TYPE;
v_comp番号 (8,2);
v_lt_25K SMALLINT := 0;
v_25K_50K SMALLINT := 0;
v_50K_75K SMALLINT := 0;
v_75K_100K SMALLINT := 0;
v_ge_100K SMALLINT := 0;
CURSOR emp_cursor IS SELECT empno, (sal + NVL(comm,0)) * 24 FROM emp;
開始
OPEN emp_cursor;
LOOP
FETCH emp_cursorにインv_empno、v_comp;
emp_cursor % NOTFOUND;
IF v_comp < 25000 THEN
v_lt_25K := v_lt_25K + 1;
ELSIF v_comp < 50000 THEN
v_25K_50K := v_25K_50K + 1;
ELSIF v_comp < 75000 THEN
v_50K_75K := v_50K_75K + 1;
ELSIF v_comp < 100000 THEN
v_75K_100K := v_75K_100K + 1;
ELSE
v_ge_100K := v_ge_100K + 1;
END IF;
END LOOP;
閉じるemp_cursor;
DBMS_OUTPUT.PUT_LINE (「年次調査による従業員の数」);
DBMS_OUTPUT.PUT_LINE('25,000未満:' | | v_lt_25K);
DBMS_OUTPUT.PUT_LINE('25,000 - 49,9999 : '| | v_25K_50K);
DBMS_OUTPUT.PUT_LINE('50,000 - 74,9999 : '| | v_50K_75K);
DBMS_OUTPUT.PUT_LINE('75,000 - 99,9999 : '| | v_75K_100K);
DBMS_OUTPUT.PUT_LINE('100,000以上: '| | v_ge_100K);
エンド; このプログラムから次の出力が生成されます。
年間報酬による従業員数
25,000未満: 2
25,000 - 49,9999 : 5
50,000 - 74,9999 : 6
75,000 - 99,9999 : 0
100,000以上: 1