Увод у Изјаву случаја у ПЛ / СКЛ

Изјава ЦАСЕ у ПЛ / СКЛ слична је стању ИФ-ЕЛСЕИФ где су различити услови наведени у блоку и извршавају се само они изрази за које задовољава тај услов. ЦАСЕ изјава одговара вредности израза уместо Боолеан израз. Израз може бити било којег типа података и у изјавама се мора користити исти тип података. Свака изјава има унапред дефинисану вредност и ако се та вредност подудара са вредностима пренесеним у селекторски израз, тада се та одређена наредба извршава. У овој теми сазнаћемо о ЦАСЕ изјави у ПЛ / СКЛ.

Синтакса

Сада када имате суштину онога што је ЦАСЕ изјава у ПЛ / СКЛ, погледајмо синтаксу ЦАСЕ изјаве.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Објашњење кода

У горњој синтакси израз ће вратити вриједност било којег типа података, сви ће изрази имати унапријед дефинирану јединствену вриједност, ЦАСЕ израз ће проћи кроз све изјаве све док не добије тачно подударање дефинирано у вриједности вриједности, у овом случају, Валуе_1, Валуе_2 и Валуе_3. Ако израз Цасе није пронашао подударање у изјави, тада ће се задана изјава извршити.

Имајте на уму да је ЕЛСЕ блок опционалан и ако не желите да се изврши ниједна подразумевана изјава, можете прескочити ову изјаву. Случај ЕНД је обавезан део случаја.

Дијаграм тока

Како изјава случаја функционише у ПЛ / СКЛ?

Иако је изјава ЦАСЕ представљена у Орацле 9и, она се широко користи у осталим програмским језицима. Као и други програмски језици, ЦАСЕ изјава функционише на сличан начин.

Орацле 9и подржава две врсте ЦАСЕ изјава једноставна ЦАСЕ изјава и претражена ЦАСЕ изјава

1. Једноставна изјава о случају

У једноставном случају, изјава се извршава ако се вриједност израза подудара са наведеним увјетом. Ови услови изјаве су унапред дефинисани током писања изјаве ЦАСЕ. Једном када преводилац пронађе подударање, он се прекида и излази из петље након извршења изјаве, чиме се избегава даља непотребна процена израза. Ако преводилац није нашао ниједно подударање, извршиће изјаву заданог случаја. Задани случај није обавезан и може се прескочити.

Синтакса

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Објашњење

Као што је раније поменуто, случај ЕЛСЕ није обавезан. Компајлер прво процењује израз ЦАСЕ, а затим упоређује израз са првим условом. Ако се услов подудара с изразом 1 израза, извршиће се у супротном, увјет 2 је провјерен и тако даље.

Погледајмо неки пример у стварном времену како бисмо јасније разумели концепт

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Претпоставимо да постоји табела за преглед која садржи детаље о повратним информацијама о крају запосленог и да морате да покажете име запосленог и оцене. Али уместо бројева које желите да прикажете Низка оцена је 1, Висока оцена је 3 иначе средња.

Горе написан упит ће дати резултате у наставку

Емплоиее_Наме ЦАСЕЦР

------–--

Богарт Лов

Нолте Медиум

Лорен Медиум

Гуенеи Хигх

2. Тражена изјава о случају

Претражена ЦАСЕ изјава нешто је другачија од једноставне ЦАСЕ изјаве. У траженој изјави случаја уместо унапред дефинисаног стања, можете написати услов који ће се проценити у време извођења.

погледајмо синтаксу Сеарцхед ЦАСЕ израза са овим примером

CASE
WHEN salary >= 10000 AND salary <=20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 AND salary <= 40000 THEN
AllocateBonus(employee_id, 1000);
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary > 60000 THEN
AllocateBonus(employee_id, 250);
ELSE
AllocateBonus(employee_id, 0);
END CASE;

Претпоставимо да је услов да се запосленом додељују бонуси на основу његовог тренутног распона зарада. Ако запослени упадне у одређене критеријуме, треба позвати функцију АллоцатеБонус која узима параметре___000_ и износ бонуса као параметре.

У горњем примеру смо дефинисали различите распоне плата и на основу те функције АллоцатеБонус ћемо се позвати ако плата падне у наведеном распону.

Напомена : У свакој итерацији извршаваће се једна и само једна изјава иако више изјава задовољава критеријуме. Кад се клаузуле увијек оцјењују према редослиједу одозго према доље.

Савети

Пошто се клаузула ВХЕН процењује одређеним редоследом, тј. Од врха до дна, препоручује се листање клаузула које ће се највероватније појавити прво или је учесталост већа. Поред израза било које ВХЕН клаузуле је скупа тј. Израз који захтева много ЦПУ меморије треба да буде присутна последња како би се умањиле шансе за извршење.

3. Унесена изјава о случају

Као и угнијежђена ИФ-ЕЛСЕ изјава, и ЦАСЕ изјава може се угнијеждити. Синтакса остаје иста само када спољни услов задовољи критеријуме, поново пролази кроз низ изјава. Хајде да импровизирамо горе тражени пример ЦАСЕ да бисмо разумели како делује изјава Нестед ЦАСЕ.

CASE
WHEN salary >= 10000 THEN
CASE
WHEN salary <= 20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 THEN
AllocateBonus(employee_id, 1000);
END CASE;
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary < 10000 THEN
give_bonus(employee_id, 0);
END CASE;

Објашњење

Као што видите, синтакса остаје иста само када када услов буде задовољен поново прођите кроз ЦАСЕ израз да бисте коначно извршили функцију Аллоцате.

Закључак - ЦАСЕ изјава у ПЛ / СКЛ

Сада када смо дошли до краја чланка, сумирамо кључне тачке о којима смо разговарали у овом чланку. Видели смо шта је ЦАСЕ изјава у ПЛ / СКЛ, научили основну синтаксу са примером. Са примером смо дискутовали о различитим типовима израза ЦАСЕ, тј. Једноставним ЦАСЕ, претраживаним ЦАСЕ и гнезденим ЦАСЕ изјавама. Такође смо научили како можемо да оптимизирамо ЦАСЕ изјаву правилним одређивањем класе ВХЕН.

Препоручени чланци

Ово је водич за ЦАСЕ изјаву у ПЛ / СКЛ. Овдје разговарамо о томе како Изјава случаја функционише у ПЛ / СКЛ-у са Примјерима и Синтаксом. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. Шта је ПЛ / СКЛ?
  2. ПЛ / СКЛ команде
  3. Употребе СКЛ-а
  4. Каријере у ПЛ / СКЛ
  5. ИФ-Елсе изјава у Матлабу
  6. Петље у ПЛ / СКЛ

Категорија: