CASE ステートメント

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 ステートメント:
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;

関連概念
ESQL

関連タスク
ESQL の開発

関連資料
構文の設定
ESQL のステートメント
CASE 関数