Case文には「単純CASE文」と「検索CASE文」の2種類の書き方があります。
単純CASE文
単純なCASE文の構造は、次のとおりです。CASE 判定する変数 WHEN リテラル値1 THEN リテラル値1に該当したときの処理 WHEN リテラル値2 THEN リテラル値2に該当したときの処理 ELSE どのリテラル値にも該当しなかった時の処理 END CASE;注意点はNullを判定できないこと。nullを判定したいときは検索CASE文を使用します。
各判定はC#と違ってフォールスルーではないので、処理ごとにbreakの記述はいりません。
DECLARE rank VARCHAR2(1); dispRank VARCHAR2(10); BEGIN rank := 'B'; CASE rank WHEN 'A' THEN dispRank := '上級'; WHEN 'B' THEN dispRank := '中級'; WHEN 'C' THEN dispRank := '初級'; ELSE dispRank := 'その他'; END CASE; SYS.DBMS_OUTPUT.PUT_LINE(dispRank); END;
検索CASE文
検索CASE文の構造は、次のとおりです。CASE WHEN 条件式1 THEN 条件式1に該当したときの処理 WHEN 条件式2 THEN 条件式2に該当したときの処理 ELSE どの条件式にも該当しなかった時の処理 END CASE;単純CASE文ではNullを判定できませんが検索CASE文ではnullを判定できます。
各判定はC#と違ってフォールスルーではないので、処理ごとにbreakの記述はいりません。
DECLARE rank VARCHAR2(1); dispRank VARCHAR2(10); BEGIN rank := null; CASE WHEN rank = 'A' THEN dispRank := '上級'; WHEN rank = 'B' THEN dispRank := '中級'; WHEN rank = 'C' THEN dispRank := '初級'; WHEN rank IS NULL THEN dispRank := '未設定'; ELSE dispRank := 'その他'; END CASE; SYS.DBMS_OUTPUT.PUT_LINE(dispRank); END;
0 件のコメント:
コメントを投稿