Instrukcja warunkowa If Then Else w Oracle PL/SQL

1. Czym jest instrukcja warunkowa i jak jej używać w Oracle PL/SQL?

Oracle IF THEN ELSE w PL/SQL to typowa instrukcja warunkowa. Wykonuje blok kodu, jeśli warunek przed blokiem jest spełniony. Jeśli nie jest spełniony mamy do dyspozycji opcjonalne warunki ELSIF i ELSE. Instrukcję IF THEN ELSE w Oracle możemy używać w PL/SQL m. in. w blokach anonimowych, procedurach, funkcjach, triggerach. Składnia PL/SQL If Then Else wygląda następująco:

--tomaszkenig.pl
IF warunek_1 THEN
   {...polecenie wykonywane, gdy warunek_1 jest spełniony - ma wartość TRUE...}
   
[ELSIF warunek_n THEN
   {...polecenie wykonywane, gdy warunek_n jest spełniony - ma wartość TRUE, a poprzednie warunki FALSE...}]
   
[ELSE
   {...polecenie wykonywane, gdy żaden z powyższych warunków nie jest spełniony - wszystkie powyższe warunki = FALSE...}]
END IF;

2. Przykład z użyciem Oracle IF THEN ELSE

Zróbmy przykład bloku anonimowego z użyciem instrukcji warunkowej. Wprowadź do PL/SQL zmienną liczbową i przypisz do niej dowolną liczbę. Za pomocą instrukcji warunkowej sprawdź, czy liczba jest większa czy mniejsza niż 100. Wynik podaj w formie tekstowej wykorzystując do tego drugą zmienną tekstową. W tym przykładzie użyjemy zarówno Oracle IF jak i ELSE.

--tomaszkenig.pl
DECLARE
NUM_LICZBA NUMBER;
VCH_WYNIK VARCHAR(50);
BEGIN
NUM_LICZBA:= 123;
IF NUM_LICZBA <= 100 
THEN VCH_WYNIK:= 'Liczba jest mniejsza lub równa 100';
ELSE VCH_WYNIK:= 'Liczba jest większa od 100';
END IF;
DBMS_OUTPUT.PUT_LINE(VCH_WYNIK || ' i wynosi: ' || NUM_LICZBA);
END;
Oracle If Then Else - Instrukcja warunkowa PL/SQL
Oracle If Then Else – Instrukcja warunkowa PL/SQL

Zróbmy kolejny przykład. W przykładzie użyjemy IF, ELSIF, ELSE. Pobierzmy zaokrągloną średnią zarobków z tabeli HR.EMPLOYEES. Za pomocą instrukcji warunkowej sprawdźmy, czy średnia jest mniejsza niż 6000, pomiędzy 6000, a 7000. W innym wypadku średnia jest większa niż 7000. Wynik, tak jak w poprzednim przykładzie podaj w formie słownej. Średnią zaokrąglij do dołu za pomocą funkcji TRUNC().

--tomaszkenig.pl
DECLARE
NUM_LICZBA NUMBER;
VCH_WYNIK VARCHAR(50);
BEGIN
SELECT TRUNC(AVG(SALARY)) INTO NUM_LICZBA FROM HR.EMPLOYEES;
IF NUM_LICZBA < 6000
THEN VCH_WYNIK:= 'Liczba jest mniejsza lub równa 6000';
ELSIF NUM_LICZBA BETWEEN 6000 AND 7000
THEN VCH_WYNIK:= 'Liczba w zakresie od 6000 do 7000';
ELSE VCH_WYNIK:= 'Liczba jest większa od 7000';
END IF;
DBMS_OUTPUT.PUT_LINE(VCH_WYNIK || ' i wynosi: ' || NUM_LICZBA);
END;

3. Przykład funkcji PL/SQL z użyciem instrukcji IF THEN ELSE Oracle.

W ostatnim przykładzie stwórzmy prostą funkcję Oracle z użyciem instrukcji warunkowej PL/SQL. Poniżej warunki funkcji:

  • Funkcja po podaniu wieku w formie liczby od 0 do 100 zwróci wynik, słowny, czy osoba jest pełnoletnia, czy niepełnoletnia.
  • Funkcja dla liczb spoza zakresu zwróci komunikat z prośbą o wprowadzenie poprawnej wartości.
  • Funkcja dodatkowo zaokrągli wiek do liczby całkowitej w dół. Możemy do tego użyć funkcji TRUNC().
--tomaszkenig.pl
CREATE OR REPLACE FUNCTION SPRAWDZ_WIEK(NUM_WIEK IN NUMBER) 
RETURN VARCHAR
IS
BEGIN
IF TRUNC(NUM_WIEK) > 100 THEN
RETURN 'Wprowadź poprawne dane';
ELSIF TRUNC(NUM_WIEK) >= 18 THEN
RETURN 'Pełnoletni';
ELSIF TRUNC(NUM_WIEK) < 0 THEN
RETURN 'Wprowadź poprawne dane';
ELSIF TRUNC(NUM_WIEK) < 18 THEN
RETURN 'Niepełnoletni';
ELSE 
RETURN 'Coś poszło nie tak';
END IF;
END;
PL/SQL IF THEN ELSE w funkcji
PL/SQL IF THEN ELSE w funkcji

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *