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: Аритметично изчисление с помощта на Case

В този пример ще направим аритметично изчисление между две числа 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“ като „НОМЕР“ тип данни и инициализиране със стойност „55“.
  • Кодов ред 3: Деклариране на променливата „b“ като тип „НОМЕР“ и инициализиране със стойност „5.“
  • Кодов ред 4: Деклариране на променливата 'arth_operation' като тип данни 'VARCHAR2' с размер 20 и инициализиране със стойност 'MULTIPLY'.
  • Код ред 6: Отпечатване на изявлението „Програмата е стартирана“.
  • Кодов ред 7: CASE проверява стойността на израза. В този случай стойността на променливата „arth_operation“ е „МНОЖЕСТВЕНО“. Тази стойност ще се третира като селектор за този 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“ като „НОМЕР“ тип данни и инициализиране със стойност „55“.
  • Кодов ред 3: Деклариране на променливата „b“ като тип „НОМЕР“ и инициализиране със стойност „5“.
  • Кодов ред 4: Деклариране на променливата „arth_operation“ като тип данни „VARCHAR2“ с размер 20 и инициализиране със стойност „DIVIDE“.
  • Код ред 6: Отпечатване на изявлението „Програмата е стартирана“.
  • Кодов ред 7: Започва изявлението SEARCHED CASE. Кодът от ред 8 до ред 13 се прескача, тъй като стойността на селектора им (ДОБАВЯНЕ, ИЗВЕЖДАНЕ, МНОЖЕСТВЕНО) не съвпада със стойността на „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'. Вместо това, той съдържа действителното състояние (което оценява на TRUE / FALSE), което ще избере алтернативите.

Използва се за избор от повече от две алтернативи най-вече.