Funkcje w bazie oracle PLSQL i SQL

13/07/2008

Instrukcje sprawdzające w PL/SQL-u

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

Atrybuty %ROWTYPE w oracle

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ć.

12/07/2008

Atrybuty %TYPE w oracle

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.

zasilane przez WordPress