Шта је ЦАСЕ изјава?
Изјава ЦАСЕ слична је изјави ИФ-ТХЕН-ЕЛСИФ која бира једну алтернативу на основу услова из доступних опција.
- ЦАСЕ израз користи "селектор", а не логички израз за одабир секвенце.
- Вредност израза у ЦАСЕ изразу третираће се као селектор.
- Израз може бити било које врсте (аритметика, променљиве итд.)
- Свакој алтернативи додељена је одређена унапред дефинисана вредност (селектор), а алтернатива са вредношћу селектора која одговара вредности условног израза ће се извршити.
- За разлику од ИФ-ТХЕН-ЕЛСИФ, ЦАСЕ израз се такође може користити у СКЛ изразима.
- Блок ЕЛСЕ у наредби ЦАСЕ садржи секвенцу коју треба извршити када није изабрана ниједна од алтернатива.
Синтакса:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END 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: Проглашавање променљиве „а“ типом „БРОЈ“ и иницијализација вредности „55“.
- Линија 3: Проглашавање променљиве „б“ типом „БРОЈ“ и иницијализација вредношћу „5.“
- Линија кода 4: Декларисање променљиве 'артх_оператион' као типа података 'ВАРЦХАР2' величине 20 и иницијализација са вредношћу 'МУЛТИПЛИ'.
- 6. ред кода: Штампање изјаве „Програм је покренут“.
- Редак кода 7: ЦАСЕ проверава вредност израза. У овом случају, вредност променљиве „арт_оператион“ је „МУЛТИПЛИ“. Ова вредност ће се сада третирати као селектор за ову ЦАСЕ изјаву.
- Редак кода 10: Клаузула ВХЕН са вредношћу „МУЛТИПЛИ“ поклапа се са вредношћу селектора, стога ће контролер одабрати овај ацтион_блоцк и исписат ће поруку „Множење бројева је: 275“.
- Шифра 13: Означава крај изјаве ЦАСЕ.
- Шифра 14: Штампање изјаве „Програм је завршен“.
Излаз кода:
Program started.Multiplication of the numbers are: 275Program completed.
ПРЕТРАЖЕНИ СЛУЧАЈ Изјава
Израз СЕАРЦХЕД ЦАСЕ сличан је исказу ЦАСЕ, уместо да користи селектор за одабир алтернативе, СЕАРЦХЕД ЦАСЕ ће директно имати израз дефинисан у клаузули ВХЕН.
- Извршиће се прва клаузула ВХЕН која задовољава услов, а контролер ће прескочити преостале алтернативе.
Синтакса:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END 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: Проглашавање променљиве „а“ типом „БРОЈ“ и иницијализација вредности „55“.
- Линија 3: Проглашавање променљиве „б“ типом „БРОЈ“ и иницијализација вредности „5“.
- Линија кода 4: Декларирање променљиве „артх_оператион“ као „ВАРЦХАР2“ типа података величине 20 и иницијализација вредношћу „ДИВИДЕ“.
- 6. ред кода: Штампање изјаве „Програм је покренут“.
- Шифра 7, започиње изјава СЕАРЦХЕД ЦАСЕ. Код од реда 8 до реда 13 се прескаче јер се њихова вредност селектора (АДД, СУБТРАЦТ, МУЛТИПЛИ) не подудара са вредношћу 'артх_оператион'.
- Редак 14: Задовољан израз клаузуле ВХЕН "артх_оператион = 'ДИВИДЕ'" и израз враћа ТРУЕ.
- Редак кода 15: Извршит ће се Ацтион_блоцк клаузуле ВХЕН и исписат ће се порука „Подјела бројева је: 11“.
- Линија кода 17: Означава крај ЦАСЕ изјаве.
- Редак кода 18: Штампање изјаве „Програм завршен“.
Излаз кода:
Program started.Division of the numbers are: 11Program completed.
Резиме
ТИП | ОПИС | УПОТРЕБА |
---|---|---|
СЛУЧАЈ |
Слично изјави ИФ-ТХЕН-ЕЛСИФ. 'СЕЛЕЦТОР' се користи за одабир алтернатива уместо логичког израза. |
Користи се за избор између неколико алтернатива помоћу „СЕЛЕЦТОР“ |
ПРЕТРАЖЕНИ СЛУЧАЈ |
ЦАСЕ изјава без стварног „СЕЛЕЦТОР“. Уместо тога, садржи стварно стање (које оцењује на ТРУЕ / ФАЛСЕ) које ће одабрати алтернативе. |
Углавном се бира између више од две алтернативе. |