この形式の条件付き文では、operand_1 (値式)がoperand_2 (値式)に等しいかどうかに応じて、最大限1つのWHEN句またはELSE句に関連したSQL制御文などのSQL文のリストを実行することができます。
WHEN句は、CASE文内に指定されている順序で評価されます。評価のプロセスは次のとおりです。
- 最初のWHEN句が評価されます。
- CASE句で指定されている値式(operand_1)がWHEN句内の値式(operand_2)に等しければ、そのWHEN句の文が実行されます。
- ストアド プロシージャ内の次の文に制御権が渡されます。値式が等しくない場合に、次のWHEN句が存在すればその句が評価されます。
- 後続のすべてのWHEN句は、ステップ1で説明した方法で評価されます。
- 評価するWHEN句がなくなった場合に、ELSE句が存在すればそれが新たな対象とされ、そのELSE句の文が実行されます。ストアド プロシージャ内の次の文に制御権が渡されます。
- ELSE句がない場合にCASE句内の値式が、WHEN句のどれにも一致しなければ、
- 実行時例外(”Case not found for CASE statement”, SQLSTATE=’20000’, SQLCODE = 7601)が発生します。
- CASE文の実行が終了します。