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

Назначение

Оператор выбора предназначен для организации множественных ветвлений. Функционально его можно заменить условным оператором с соответствующим количеством условий 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;