Wprowadzenie do instrukcji Case w PL / SQL

Instrukcja CASE w PL / SQL jest podobna do warunku IF-ELSEIF, w którym różne bloki są wymienione w bloku i wykonywane są tylko te instrukcje, dla których spełnia warunek. Instrukcja CASE dopasowuje wartość wyrażenia zamiast wyrażenia logicznego. Wyrażenie może mieć dowolny typ danych i ten sam typ danych musi być użyty w instrukcjach. Każda instrukcja ma wstępnie zdefiniowaną wartość, a jeśli ta wartość pasuje do wartości przekazanych w wyrażeniu selektora, wówczas ta konkretna instrukcja zostanie wykonana. W tym temacie poznamy instrukcję CASE w języku PL / SQL.

Składnia

Teraz, gdy masz już pojęcie o tym, czym jest instrukcja CASE w PL / SQL, spójrzmy na składnię instrukcji CASE.

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

Objaśnienie kodu

W powyższej składni wyrażenie zwróci wartość dowolnego typu danych, wszystkie instrukcje będą miały wstępnie zdefiniowaną unikalną wartość, wyrażenie CASE przejdzie przez wszystkie instrukcje, aż uzyska dokładne dopasowanie zdefiniowane w wyrażeniu wartości, w tym przypadku, Value_1, Value_2 i Value_3. Jeśli wyrażenie Case nie znalazło dopasowania w instrukcji, wówczas instrukcja domyślna zostanie wykonana.

Zauważ, że blok ELSE jest opcjonalny i jeśli nie chcesz, aby wykonywana była instrukcja domyślna, możesz pominąć tę instrukcję. Sprawa END jest obowiązkową częścią sprawy.

Schemat przepływu

Jak działa instrukcja instrukcji w języku PL / SQL?

Chociaż instrukcja CASE wprowadzona w Oracle 9i jest szeroko stosowana w innych językach programowania. Podobnie jak inne języki programowania, instrukcja CASE działa w podobny sposób.

Oracle 9i obsługuje dwa typy instrukcji CASE: prosta instrukcja CASE i wyszukiwana instrukcja CASE

1. Prosta instrukcja przypadku

W prostej instrukcji case instrukcja jest wykonywana, jeśli wartość wyrażenia jest zgodna z podanym warunkiem. Te warunki instrukcji są predefiniowane podczas pisania instrukcji CASE. Gdy kompilator znajdzie dopasowanie, łamie się i wychodzi z pętli po wykonaniu instrukcji, unikając dalszej niepotrzebnej oceny wyrażeń. Jeśli kompilator nie znalazł żadnego dopasowania, wykona instrukcję przypadku domyślnego. Domyślny przypadek nie jest obowiązkowy i można go pominąć.

Składnia

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Wyjaśnienie

Jak wspomniano wcześniej, przypadek ELSE jest opcjonalny. Kompilator najpierw ocenia wyrażenie CASE, a następnie porównuje wyrażenie z pierwszym warunkiem. Jeśli warunek jest zgodny z wyrażeniem 1, zostanie wykonany, w przeciwnym razie warunek 2 zostanie sprawdzony i tak dalej.

Zobaczmy przykład w czasie rzeczywistym, aby lepiej zrozumieć tę koncepcję

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

Załóżmy, że istnieje tabela przeglądu, która zawiera szczegółowe informacje zwrotne na koniec roku pracowniczego, a Ty musisz podać nazwisko pracownika i oceny. Ale zamiast liczb, które chcesz pokazać Niska ocena to 1, Wysoka ocena to 3, w przeciwnym razie średnia.

Powyższe zapytanie spowoduje wyświetlenie poniższych wyników

Employee_Name CASECR

------– --

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Przeszukiwana instrukcja CASE

Przeszukiwana instrukcja CASE różni się nieco od prostej instrukcji CASE. W instrukcji Searched Case zamiast predefiniowanego warunku można napisać warunek, który zostanie oceniony w czasie wykonywania.

spójrzmy na składnię instrukcji Searched CASE w tym przykładzie

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;

Załóżmy, że warunkiem jest przyznanie premii pracownikowi w oparciu o jego bieżący zakres wynagrodzeń. Jeśli pracownik spełnia określone kryteria, powinna zostać wywołana funkcja AllocateBonus, która przyjmuje parametry pracownik_id i premię jako parametry.

W powyższym przykładzie zdefiniowaliśmy różne zakresy wynagrodzeń i na podstawie tej funkcji AllocateBonus zostanie wywołana, jeśli wynagrodzenie mieści się w określonym zakresie.

Uwaga : W każdej iteracji zostanie wykonana jedna i tylko jedna instrukcja, mimo że wiele instrukcji spełnia kryteria. Kiedy klauzule są zawsze oceniane w kolejności od góry do dołu.

Porady

Ponieważ klauzula WHEN jest oceniana w określonej kolejności, tj. Od góry do dołu, zaleca się spisanie klauzul, które najprawdopodobniej wystąpią jako pierwsze lub częstotliwość będzie większa. Oprócz klauzuli WHEN jest drogie, tzn. Wyrażenie, które wymaga dużej ilości pamięci procesora, powinno być obecne na końcu, aby zminimalizować szanse na wykonanie.

3. Zagnieżdżona instrukcja CASE

Podobnie jak zagnieżdżona instrukcja IF-ELSE, instrukcja CASE może być również zagnieżdżona. Składnia pozostaje taka sama, tylko gdy warunek zewnętrzny spełnia kryteria, ponownie przechodzi przez szereg instrukcji. Zaimprowizujmy powyższy przykład CASE, aby zrozumieć, jak działa instrukcja Zagnieżdżona CASE.

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;

Wyjaśnienie

Jak widzisz, składnia pozostaje taka sama, tyle że gdy warunek się spełni, ponownie przejrzyj instrukcję CASE, aby w końcu wykonać funkcję przydziału.

Wniosek - instrukcja CASE w języku PL / SQL

Teraz, gdy dotarliśmy do końca artykułu, podsumujmy kluczowe punkty, które omówiliśmy w tym artykule. Widzieliśmy, czym jest instrukcja CASE w języku PL / SQL, poznaliśmy podstawową składnię na przykładzie. Omówiliśmy różne typy instrukcji CASE, tj. Prostą CASE, przeszukiwaną CASE i zagnieżdżoną instrukcję CASE z przykładem. Dowiedzieliśmy się również, w jaki sposób możemy zoptymalizować instrukcję CASE poprzez prawidłowe uporządkowanie klauzuli WHEN.

Polecane artykuły

Jest to przewodnik po instrukcji CASE w języku PL / SQL. Tutaj omawiamy, jak działa instrukcja Case w PL / SQL z przykładami i składnią. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Co to jest PL / SQL?
  2. Polecenia PL / SQL
  3. Zastosowania SQL
  4. Kariery w PL / SQL
  5. Instrukcja IF-Else w Matlabie
  6. Pętle w PL / SQL