CASEcase_valueWHENwhen_valueTHENstatement_list[WHENwhen_valueTHENstatement_list] ... [ELSEstatement_list] END CASE
または
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
          ストアドプログラムの
          CASE
          ステートメントは、複雑な条件構造構文を実装します。search_condition
          が真の場合、該当する SQL
          ステートメントが実行されます。検索条件が合致しない場合、ELSE
          節内のステートメントリストが実行されます。各
          statement_list
          は複数のステートメントから成り立っています。
        
          when_value または
          search_condition
          がテスト済みの値に一致せず、CASE
          ステートメントに
          ELSE
          節が含まれていない場合は、 Case not
          found for CASE statement
          エラーが発生します。
        
          各 statement_list は、1
          つ以上のステートメントで構成されます。空の
          statement_list
          は許可されません。次の例に示すように、値がどの
          WHEN
          節にも一致しない状況に対処するには、空の
          BEGIN ... END
          ブロックを含む ELSE
          を使用します。
DELIMITER |
CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;
    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
          (ここの ELSE
          節で使用されているインデントは透明性のみを目的にしており、それ以外の意味はありません。)
        
            ストアドプログラムの内部で使用されている
            CASE
            ステートメントの構文は、項7.3. 「制御フロー関数」
            で説明されている SQL
            CASE
            式の構文とは若干異なります。CASE
            ステートメントは ELSE
            NULL
            節を持つことができず、END
            でなく、END CASE
            で終了します。
          

