CASE#

Синтаксис#

Простой CASE:

CASE
  WHEN condition THEN statements
  [ ... ]
  [ ELSE statements ]
END CASE

Поисковый CASE:

CASE expression
  WHEN expression THEN statements
  [ ... ]
  [ ELSE statements ]
END

Описание#

Оператор CASE — это необязательная конструкция, позволяющая выполнять условную обработку в SQL пользовательские функции.

Клаузы WHEN вычисляются последовательно и выполнение останавливается на первом совпадении, поэтому порядок операторов имеет значение. Операторы в клаузе ELSE выполняются, если ни одна из клауз WHEN не сработала.

В отличие от таких языков, как C или Java, SQL не поддерживает проваливание (fall through) между case, поэтому выполнение останавливается в конце первого совпавшего варианта.

Можно использовать одну или несколько клауз WHEN.

Примеры#

Следующий пример показывает использование простого оператора CASE:

FUNCTION simple_case(a bigint)
  RETURNS varchar
  BEGIN
    CASE a
      WHEN 0 THEN RETURN 'zero';
      WHEN 1 THEN RETURN 'one';
      ELSE RETURN 'more than one or negative';
    END CASE;
    RETURN NULL;
  END

Дополнительные примеры различной сложности, демонстрирующие использование оператора CASE в сочетании с другими операторами, доступны в Примеры SQL UDF.

См. также#