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