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

Назначение

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