Wiadomo jak w każdym języku programowania powinny być instrukcje sprawdzające warunkowe tj. w skrócie jeżeli jakiś warunek zwraca prawdę to rób następujące rzeczy jeżeli nie to rób jakieś inne. W PL/SQL-u mamy następujące instrukcje:
-) IF-THEN-ELSE - jeżeli spełniony warunek to wtedy rób to i to, w innym przypadku rób to co poniżej
-) CASE - można powiedzieć instrukcja wyboru, często wykorzystywana w różnego rodzaju menu
-) FOR-LOOP - to działa na zasadzie pętli tj. dla warunku rób krok po kroku aż do LOOP i potem następne sprawdzenie itd.
-) WHILE-LOOP - to też jest rodzaj pętli
-) EXIT-WHEN - tutaj jeżeli warunek daje prawdę wtedy wychodzimy np. z pętli
-) GOTO - tutaj jak sama nazwa wskazuje idź do, dzięki tej instrukcji możemy skakać do różnych linii programu, z praktyki nie polecam tej instrukcji ponieważ czasami trudną nad nią zapanować i czasami trudno przewidzieć co się stanie
Jeżeli w procedurze, pakiecie czy funkcji korzystamy z kilku kolumn z jednej tabeli to warto skorzystać z atrybutu %ROWTYPE.
Ten atrybut będzie przetrzymywał dane o typach w całym rekordzie z danej tabeli.
Najlepiej pokażę to na przykładzie:
DECLARE
wiersz_prac pracownik%ROWTYPE;
BEGIN
select * into wiersz_prac from pracownik where nazwisko=’Iksinski’;
DBMS_OUTPUT.PUT_LINE(’ Dane pracownika - imie: ‘ || wiersz_prac.imie || ‘nazwisko: ‘ || wiersz_prac_nazwisko);
END;
/
wiersz_prac pracownik%ROWTYPE;
tutaj zadeklarowaliśmy typ ROWTYPE na podstawie typów kolumn w tabeli pracownik dla zmiennej wiersz_prac, innymi słowy w zmiennej wiersz_prac będą przechowywane informacje o typach kolumn z tabeli pracownik w zapytaniu select podstawiliśmy wartości kolumn z tabeli pracownik do zmiennej wiersz_prac dla rekordu gdzie nazwisko=’Iksinski’, następnie jak chcemy wykorzystać wykonać jakąś operacje na tych wartościach to możemy wywołać już poszczególne wartości z kolumny pisząc zmienna.nazwa_kolumny, przykład: wiersz_prac.imie, mimo że nigdzie nie definiowaliśmy zmiennej imie z tabeli pracownik to dzięki zmiennej wiersz_prac możemy na niej pracować.
Atrybutów %TYPE i %ROWTYPE wykorzystujemy do nadawania typ zmiennym lub stałym, odpowiednio %TYPE - typ danych pobierany jest z typu kolumny i podstawiany pod zmienna lub stałą przykład:
DECLARE
imie_chłopca imiona.imie%TYPE;
wiek_chłopca studenci.wiek%TYPE;
BEGIN
imie_chłopca:=’Piotr’;
wiek_chłopca:=41;
i teraz kilka słów wytłumaczenia, deklarujemy dwie zmienne imie_chłopca i wiek_chłopca nie deklarujemy jawnie że ma być to np. typ danych VARCHAR2(30) tylko mówimy weź taki sam typ danych jaki ma kolumna imie z tabeli imiona a ponieważ ta kolumna ma typ VARCHAR2(29) więc dla zmiennej imie_chłopca podstawiany jest typ VARCHAR2(29);
analogicznie będzie ze zmienną wiek_chłopca.
Taki sposób deklarowania typu zmiennych ma przewagę ponieważ nie musimy znać typu danych w kolumnie, a dodatkowo jak typ danych w kolumnie zostanie zmieniony my nie musimy w procedurze dokonywać zmian.