CASE ステートメントは WHEN 文節で定義された規則を使用して、処理するステートメントのブロックを選択します。
CASE ステートメントには単純形式と検索形式の 2 種類の形式があります。
単純形式の場合、メインの式がまず評価されます。結果がメイン式の結果と等しくなるまで、各 WHEN 文節式が次々に評価されます。次いで、その WHEN 文節のステートメントが実行されます。一致が検出されず、かつオプションの ELSE 節がある場合は、ELSE 節のステートメントが代わりに実行されます。テスト値は、リテラルでなくてもかまいません。唯一の要件は、メイン式と WHEN 文節式が比較可能なタイプへと評価されることです。
検索形式では、各 WHEN 文節式が、TRUE に評価されるまで、次々に評価されます。次いで、その WHEN 文節のステートメントが実行されます。どの式も TRUE に評価されず、かつオプションの ELSE 節がある場合は、ELSE 節のステートメントが代わりに実行されます。各 CASE 文節の式どうしが類似している必要はありません。唯一の要件は、それらすべてがブール値に評価されることです。
ESQL 言語には CASE ステートメントと CASE 関数の両方があります (CASE 関数の詳細については、CASE 関数を参照してください)。CASE ステートメントは実行するステートメントのセットを 1 つ選びます。CASE 関数は評価する式のセットを 1 つ選び、選んだ式の戻り値をその値として戻します。
CASE size WHEN minimum + 0 THEN SET description = 'small'; WHEN minimum + 1 THEN SET description = 'medium'; WHEN minimum + 2 THEN SET description = 'large'; CALL handleLargeObject(); ELSE SET description = 'unknown'; CALL handleError(); END CASE;検索 CASE ステートメント:
CASE WHEN i <> 0 THEN CALL handleI(i); WHEN j > 1 THEN CALL handleIZeroAndPositiveJ(j); ELSE CALL handleAllOtherCases(j); END CASE;