SQL 解説書

CASE ステートメント

CASE ステートメントは、複数の条件に基づいて実行パスを選択します。

構文

>>-CASE----+-| searched-case-statement-when-clause |-+---------->
           '-| simple-case-statement-when-clause |---'
 
>----END CASE--------------------------------------------------><
 
simple-case-statement-when-clause
 
|---expression-------------------------------------------------->
 
      .-------------------------------------------------------------.
      |                          .-------------------------------.  |
      V                          V                               |  |
>--------WHEN--expression--THEN-----SQL-procedure-statement--;---+--+>
 
>-----+------------------------------------------+--------------|
      |       .-------------------------------.  |
      |       V                               |  |
      '-ELSE-----SQL-procedure-statement--;---+--'
 
searched-case-statement-when-clause
 
    .-------------------------------------------------------------------.
    |                                .-------------------------------.  |
    V                                V                               |  |
|------WHEN--search-condition--THEN-----SQL-procedure-statement--;---+--+->
 
>----+------------------------------------------+---------------|
     |       .-------------------------------.  |
     |       V                               |  |
     '-ELSE-----SQL-procedure-statement--;---+--'
 

説明

CASE
case-expression を開始します。

simple-case-statement-when-clause
最初の WHEN キーワードの前の expression (式) の値が、 その WHEN キーワードの後にある各 expression の値と等しいかどうかが検査されます。 検索条件が真の場合、THEN ステートメントが実行されます。 結果が不定または偽の場合、処理は次の検索条件まで継続されます。 結果が検索条件のいずれにも一致せず、なおかつ ELSE 文節が使用されている場合、 ELSE 文節内のステートメントが処理されます。

searched-case-statement-when-clause
WHEN キーワードの後の search-condition が評価されます。 真であると評価された場合、関連する THEN 文節内のステートメントが評価されます。 偽または不定であると評価された場合、次の search-condition が評価されます。 真であると評価される search-condition がなく、 なおかつ ELSE 文節が使用されている場合、ELSE 文節内のステートメントが処理されます。

SQL-procedure-statement
呼び出すステートメントを指定します。

END CASE
case-statement を終了します。

SQL 変数 v_workdept の値によっては、 表 DEPARTMENT 内の更新列 DEPTNAME を適当な名前で更新しなければなりません。

以下の例では、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

以下の例では、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


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]