Оператор выбора

Назначение

Оператор выбора предназначен для организации множественных ветвлений. Функционально его можно заменить условным оператором с соответствующим количеством условий ELSEIF, но он имеет более простую и наглядную конструкцию.

Синтаксис

           
CASE <выражение>
  WHEN <литерал1 [, литерал]... [, литерал]> THEN
    <операторы 1>
  WHEN <литерал2 [, литерал]... [, литерал]> THEN
    <операторы 2>
.............
  [WHEN OTHERS THEN
    <операторы>
  ]
ENDCASE

Описание

Тип литералов и тип CASE-выражения должны быть совместимы.

Значение CASE-выражения последовательно сравнивается с литералами в операторах WHEN. При первом совпадении значения CASE-выражения с литералом одного из WHEN-оператора выполняются операторы, соответствующие этому условию (т.е. до следующего WHEN-оператора или до ENDCASE), после чего выполнение оператора выбора завершается. Если значение CASE-выражения не было найдено среди списка литералов, выполняется ветвь WHEN OTHERS. Если она отсутствует, управление передается сразу на следующий оператор после ENDCASE.

Пример оператора выбора

case rel_name
  when "$$$SYSRL", "$$$ATTRI", "$$$USR" then
    definit := "System dictionary table";
  when  "$$$PROC", "$$$PRCD" then
    definit := "System stored procedures table";
  when others then
    definit := "Unknown table class";
endcase;