Орацле ПЛ / СКЛ: ЦАСЕ изјава са примерима

Преглед садржаја:

Anonim

Шта је ЦАСЕ изјава?

Изјава ЦАСЕ слична је изјави ИФ-ТХЕН-ЕЛСИФ која бира једну алтернативу на основу услова из доступних опција.

  • ЦАСЕ израз користи "селектор", а не логички израз за одабир секвенце.
  • Вредност израза у ЦАСЕ изразу третираће се као селектор.
  • Израз може бити било које врсте (аритметика, променљиве итд.)
  • Свакој алтернативи додељена је одређена унапред дефинисана вредност (селектор), а алтернатива са вредношћу селектора која одговара вредности условног израза ће се извршити.
  • За разлику од ИФ-ТХЕН-ЕЛСИФ, ЦАСЕ израз се такође може користити у СКЛ изразима.
  • Блок ЕЛСЕ у наредби ЦАСЕ садржи секвенцу коју треба извршити када није изабрана ниједна од алтернатива.

Синтакса:

CASE (expression)WHEN  THEN 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.

ПРЕТРАЖЕНИ СЛУЧАЈ Изјава

Израз СЕАРЦХЕД ЦАСЕ сличан је исказу ЦАСЕ, уместо да користи селектор за одабир алтернативе, СЕАРЦХЕД ЦАСЕ ће директно имати израз дефинисан у клаузули ВХЕН.

  • Извршиће се прва клаузула ВХЕН која задовољава услов, а контролер ће прескочити преостале алтернативе.

Синтакса:

CASEWHEN  THEN 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.

Резиме

ТИП ОПИС УПОТРЕБА

СЛУЧАЈ

Слично изјави ИФ-ТХЕН-ЕЛСИФ. 'СЕЛЕЦТОР' се користи за одабир алтернатива уместо логичког израза.

Користи се за избор између неколико алтернатива помоћу „СЕЛЕЦТОР“

ПРЕТРАЖЕНИ СЛУЧАЈ

ЦАСЕ изјава без стварног „СЕЛЕЦТОР“. Уместо тога, садржи стварно стање (које оцењује на ТРУЕ / ФАЛСЕ) које ће одабрати алтернативе.

Углавном се бира између више од две алтернативе.