Oracle PL / SQL: оператор CASE с примерами

Содержание:

Anonim

Что такое CASE Statement?

Оператор CASE аналогичен оператору IF-THEN-ELSIF, который выбирает одну альтернативу на основе условия из доступных вариантов.

  • В операторе CASE для выбора последовательности используется «селектор», а не логическое выражение.
  • Значение выражения в операторе CASE будет рассматриваться как селектор.
  • Выражение может быть любого типа (арифметическое, переменное и т. Д.)
  • Каждой альтернативе присваивается определенное предопределенное значение (селектор), и будет выполнена альтернатива со значением селектора, которое соответствует значению условного выражения.
  • В отличие от IF-THEN-ELSIF, оператор CASE также может использоваться в операторах SQL.
  • Блок ELSE в операторе CASE содержит последовательность, которая должна быть выполнена, когда ни одна из альтернатив не выбрана.

Синтаксис:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • В приведенном выше синтаксисе выражение вернет значение, которое может быть любого типа (переменная, число и т. Д.).
  • Каждое предложение WHEN рассматривается как альтернатива, имеющая и .
  • Будет выбрано предложение WHEN, которое соответствует значению выражения, и будет выполнен соответствующий блок .
  • Блок «ELSE» является необязательным и содержит , который должен быть выполнен, когда ни одна из альтернатив не соответствует значению выражения.
  • «END» отмечает конец оператора CASE, и это обязательная часть CASE.

Пример 1: арифметическое вычисление с использованием регистра

В этом примере мы собираемся произвести арифметические вычисления между двумя числами 55 и 5.

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_output.put_line(‘Program started.' );CASE (arth_operation)WHEN ‘ADD’ THEN dbms_output.put_line(‘Addition of the numbers are: '|| a+b );WHEN ‘SUBTRACT' THEN dbms_output.put_line(‘Subtraction of the numbers are: '||a-b );WHEN ‘MULTIPLY' THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b);WHEN ‘DIVIDE' THEN dbms_output.put_line(‘Division of the numbers are:'|| a/b);ELSE dbms_output.put_line(‘No operation action defined. Invalid operation');END CASE;dbms_output.put_line(‘Program completed.' );END;/

Пояснение к коду:

  • Строка кода 2: Объявление переменной 'a' как тип данных 'NUMBER' и инициализация ее значением '55'.
  • Строка кода 3: Объявление переменной 'b' как тип данных 'ЧИСЛО' и инициализация ее значением '5.'
  • Строка кода 4: Объявление переменной arth_operation как тип данных VARCHAR2 размера 20 и инициализация ее значением MULTIPLY.
  • Строка кода 6: Печать оператора «Программа запущена».
  • Строка кода 7: CASE проверяет значение выражения. В этом случае значение переменной arth_operation - MULTIPLY. Теперь это значение будет рассматриваться как селектор для этого оператора CASE.
  • Строка кода 10: Предложение WHEN со значением «MULTIPLY» совпадает со значением селектора, поэтому контроллер выберет этот блок action_block и напечатает сообщение «Умножение чисел: 275».
  • Строка кода 13: отмечает конец оператора CASE.
  • Строка кода 14: печать оператора «Программа завершена».

Вывод кода:

Program started.Multiplication of the numbers are: 275Program completed.

ПОИСК СЛУЧАЯ Заявление

Оператор SEARCHED CASE похож на оператор CASE, вместо того, чтобы использовать селектор для выбора альтернативы, SEARCHED CASE будет напрямую иметь выражение, определенное в предложении WHEN.

  • Будет выполнено первое предложение WHEN, удовлетворяющее условию, и контроллер пропустит оставшиеся альтернативы.

Синтаксис:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • В приведенном выше синтаксисе каждое предложение WHEN имеет отдельные и .
  • Предложение WHEN, для которого выражение возвращает TRUE, будет выполнено.
  • Блок 'ELSE' является необязательным, он содержит , который должен быть выполнен, когда ни одна из альтернатив не удовлетворяет.
  • 'END' отмечает конец оператора CASE и является обязательной частью CASE.

Пример 1: арифметические вычисления с использованием искомого регистра

В этом примере мы собираемся произвести арифметические вычисления между двумя числами 55 и 5.

DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN arth_operation = 'ADD'THEN dbms_output.put_line(‘Addition of the numbers are: '||a+b );WHEN arth_operation = ‘SUBTRACT'THEN dbms_output.put_line(‘Subtraction of the numbers are: '|| a-b);WHEN arth_operation = ‘MULTIPLY’THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b );WHEN arth_operation = ’DIVIDE'THEN dbms_output.put_line(‘Division of the numbers are: '|| a/b ):ELSE dbms_output.put_line(‘No operation action defined. Invalid operation');END CASE;dbms_output.put_line(‘Program completed.' );END;/

Пояснение к коду:

  • Строка кода 2: Объявление переменной 'a' как тип данных 'NUMBER' и инициализация ее значением '55'.
  • Строка кода 3: Объявление переменной «b» как типа данных «ЧИСЛО» и инициализация ее значением «5».
  • Строка кода 4: Объявление переменной arth_operation как тип данных VARCHAR2 размера 20 и инициализация ее значением DIVIDE.
  • Строка кода 6: Печать оператора «Программа запущена».
  • Строка кода 7: начинается инструкция SEARCHED CASE. Код со строки 8 по строку 13 пропускается, поскольку значение их селектора (ADD, SUBTRACT, MULTIPLY) не совпадает со значением 'arth_operation'.
  • Строка кода 14: выражение предложения WHEN "arth_operation = 'DIVIDE'" выполнено, и выражение возвращает TRUE.
  • Строка кода 15: Action_block предложения WHEN будет выполнено, и будет напечатано сообщение «Деление чисел: 11».
  • Строка кода 17: отмечает конец оператора CASE.
  • Строка кода 18: печать оператора «Программа завершена».

Вывод кода:

Program started.Division of the numbers are: 11Program completed.

Резюме

ТИП ОПИСАНИЕ ИСПОЛЬЗОВАНИЕ

ДЕЛО

Аналогично оператору IF-THEN-ELSIF. «SELECTOR» используется для выбора альтернатив вместо логического выражения.

Используется для выбора из нескольких альтернатив с помощью SELECTOR.

ИСКАЛИ СЛУЧАЙ

Оператор CASE без фактического «SELECTOR». Вместо этого он содержит фактическое условие (которое оценивается как ИСТИНА / ЛОЖЬ), которое выберет альтернативы.

В основном используется для выбора из более чем двух альтернатив.