Oracle PL / SQL: Instrukcja CASE z przykładami

Spisie treści:

Anonim

Co to jest oświadczenie CASE?

Instrukcja CASE jest podobna do instrukcji IF-THEN-ELSIF, która wybiera jedną alternatywę na podstawie warunku z dostępnych opcji.

  • Instrukcja CASE używa „selektora” zamiast wyrażenia boolowskiego do wybrania sekwencji.
  • Wartość wyrażenia w instrukcji CASE będzie traktowana jako selektor.
  • Wyrażenie może być dowolnego typu (arytmetyka, zmienne itp.)
  • Każda alternatywa ma przypisaną określoną wstępnie zdefiniowaną wartość (selektor), a alternatywa z wartością selektora, która jest zgodna z wartością wyrażenia warunkowego, zostanie wykonana.
  • W przeciwieństwie do IF-THEN-ELSIF instrukcja CASE może być również używana w instrukcjach SQL.
  • Blok ELSE w instrukcji CASE zawiera sekwencję, która musi zostać wykonana, gdy żadna z alternatyw nie została wybrana.

Składnia:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • W powyższej składni wyrażenie zwróci wartość, która może być dowolnego typu (zmienna, liczba itp.).
  • Każda klauzula „WHEN” jest traktowana jako alternatywa, która ma i .
  • Zostanie wybrana klauzula „WHEN”, która odpowiada wartości wyrażenia, a odpowiadający jej element zostanie wykonany.
  • Blok „ELSE” jest opcjonalny i zawiera wartość , która musi zostać wykonana, gdy żadna z alternatyw nie pasuje do wartości wyrażenia.
  • „END” oznacza koniec oświadczenia CASE i jest obowiązkową częścią CASE.

Przykład 1: Obliczenia arytmetyczne przy użyciu przypadku

W tym przykładzie wykonamy obliczenia arytmetyczne między dwiema liczbami 55 i 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;/

Objaśnienie kodu:

  • Linia kodu 2: Zadeklarowanie zmiennej „a” jako typu danych „LICZBA” i zainicjowanie jej wartością „55”.
  • Linia kodu 3: Zadeklarowanie zmiennej „b” jako typu danych „LICZBA” i zainicjowanie jej wartością „5”.
  • Linia kodu 4: Zadeklarowanie zmiennej „arth_operation” jako typ danych „VARCHAR2” o rozmiarze 20 i zainicjowanie jej wartością „MULTIPLY”.
  • Linia kodu 6: Wydruk instrukcji „Program uruchomiony”.
  • Linia kodu 7: CASE sprawdza wartość wyrażenia. W tym przypadku wartością zmiennej „arth_operation” jest „MULTIPLY”. Ta wartość będzie teraz traktowana jako selektor dla tej instrukcji CASE.
  • Linia kodu 10: Klauzula WHEN o wartości „MULTIPLY” jest zgodna z wartością selektora, dlatego kontroler wybierze ten blok akcji i wydrukuje komunikat „Mnożenie liczb to: 275”.
  • Linia kodu 13: oznacza koniec instrukcji CASE.
  • Linia kodu 14: Drukowanie instrukcji „Program zakończony”.

Kod wyjściowy:

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

Instrukcja SEARCHED CASE

Instrukcja SEARCHED CASE jest podobna do instrukcji CASE i zamiast używać selektora do wybierania alternatywy, SEARCHED CASE będzie miała bezpośrednio wyrażenie zdefiniowane w klauzuli WHEN.

  • Pierwsza klauzula WHEN, która spełnia warunek, zostanie wykonana, a kontroler pominie pozostałe alternatywy.

Składnia:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • W powyższej składni każda klauzula WHEN ma oddzielne i .
  • Klauzula WHEN, dla której wyrażenie zwraca wartość TRUE, zostanie wykonana.
  • Blok „ELSE” jest opcjonalny i zawiera wartość , która musi zostać wykonana, gdy żadna z alternatyw nie spełnia wymagań.
  • „END” oznacza koniec oświadczenia CASE i jest obowiązkową częścią CASE.

Przykład 1: Obliczenia arytmetyczne przy użyciu szukanego przypadku

W tym przykładzie wykonamy obliczenia arytmetyczne między dwiema liczbami 55 i 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;/

Objaśnienie kodu:

  • Linia kodu 2: Zadeklarowanie zmiennej „a” jako typu danych „LICZBA” i zainicjowanie jej wartością „55”.
  • Linia kodu 3: Zadeklarowanie zmiennej „b” jako typu danych „LICZBA” i zainicjowanie jej wartością „5”.
  • Linia kodu 4: Zadeklarowanie zmiennej „arth_operation” jako typ danych „VARCHAR2” o rozmiarze 20 i zainicjowanie jej wartością „DIVIDE”.
  • Linia kodu 6: Wydruk instrukcji „Program uruchomiony”.
  • Linia kodu 7: Rozpoczyna się instrukcja SEARCHED CASE. Kod od linii 8 do linii 13 jest pomijany, ponieważ ich wartość selektora (ADD, SUBTRACT, MULTIPLY) nie zgadza się z wartością „arth_operation”.
  • Linia kodu 14: wyrażenie „arth_operation = 'DIVIDE'” klauzuli WHEN zostało spełnione, a wyrażenie zwraca wartość PRAWDA.
  • Linia kodu 15: Wykonany zostanie Action_block klauzuli WHEN i zostanie wydrukowany komunikat „Podział liczb to: 11”.
  • Linia kodu 17: oznacza koniec instrukcji CASE.
  • Linia kodu 18: Drukowanie instrukcji „Program zakończony”.

Kod wyjściowy:

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

Podsumowanie

RODZAJ OPIS STOSOWANIE

WALIZKA

Podobna do instrukcji IF-THEN-ELSIF. „SELEKTOR” służy do wyboru alternatyw zamiast wyrażenia boolowskiego.

Służy do wybierania spośród kilku alternatyw za pomocą „SELECTOR”

SZUKANY PRZYPADEK

Instrukcja CASE bez rzeczywistego „SELECTOR”. Zamiast tego zawiera rzeczywisty stan (którego wynikiem jest PRAWDA / FAŁSZ), który wybierze alternatywy.

Używane głównie do wyboru z więcej niż dwóch alternatyw.