CASE ステートメント
CASE ステートメントは、複数の条件に基づいて実行パスを選択します。 CASE ステートメントを CASE 式と混同しないでください。 CASE 式を使用すると、1 つ以上の条件の評価に基づいて 1 つの式を選択できます。
呼び出し
このステートメントは、以下の対象に組み込むことができます。
- SQL プロシージャー定義
- コンパウンド SQL (コンパイル済み) ステートメント
- コンパウンド SQL (インライン化) ステートメント
許可
CASE ステートメントを呼び出すために、特権は必要ありません。 ただし、ステートメントの許可 ID によって保持される特権には、CASE ステートメントに組み込まれている SQL ステートメントおよび式を呼び出すために必要なすべての特権が含まれていなければなりません。
構文
説明
- CASE
- case-statement を開始します。 単純ケース・ステートメントの WHEN 文節
- 最初の WHEN キーワードの前の expression (式) の値が、 その WHEN キーワードの後にある各 expression の値と等しいかどうかが検査されます。 検索条件が真の場合、THEN ステートメントが実行されます。 結果が不明または偽の場合、処理は次の検索条件まで継続されます。 結果が検索条件のいずれにも一致せず、なおかつ ELSE 節が使用されている場合、 ELSE 節内のステートメントが処理されます。 検索ケース・ステートメントの WHEN 文節
- WHEN キーワードの後の search-condition が評価されます。 真であると評価された場合、関連する THEN 節内のステートメントが評価されます。 偽または不明であると評価された場合、次の search-condition が評価されます。 真であると評価される search-condition がなく、 なおかつ ELSE 節が使用されている場合、ELSE 節内のステートメントが処理されます。 SQL プロシージャー・ステートメント
- 呼び出すステートメントを指定します。
コンパウンド SQL (コンパイル済み)
ステートメントの SQL-procedure-statement を参照してください。 - END CASE
- case-statement を終了します。
注
- WHEN で指定した条件がすべて真ではなく、なおかつ ELSE 節が指定されていない場合、 実行時にエラーが出され、CASE ステートメントの実行が終了します (SQLSTATE 20000)。
- 使用する CASE ステートメントでは、考えられるあらゆる実行条件を全て網羅するようにしてください。
例
SQL 変数 v_workdept
の値に応じて、表 DEPARTMENT の列 DEPTNAME を適切な名前で更新します。
- 例 1: 以下の例では、simple-case-statement-when-clause の構文を使用して、
これを行う方法を示しています。
CASE v_workdept WHEN'A00' THEN UPDATE department SET deptname = 'DATA ACCESS 1'; WHEN 'B01' THEN UPDATE department SET deptname = 'DATA ACCESS 2'; ELSE UPDATE department SET deptname = 'DATA ACCESS 3'; END CASE
- 例 2: 以下の例では、searched-case-statement-when-clause の構文を使用して、
これを行う方法を示しています。
CASE WHEN v_workdept = 'A00' THEN UPDATE department SET deptname = 'DATA ACCESS 1'; WHEN v_workdept = 'B01' THEN UPDATE department SET deptname = 'DATA ACCESS 2'; ELSE UPDATE department SET deptname = 'DATA ACCESS 3'; END CASE