Procedury SQL i PLSQL oracle

13/07/2008

Wywołanie funkcji w oracle

W tym przykładzie pokażę jak wywołać (uruchomić) funkcję male_litery

BEGIN
DBMS_OUTPUT.PUT_LINE(male_litery(imie, nazwisko));
END;
/

Procedury i funkcje w PL/SQL-u

Procedura to program w którym definiujemy zmienne, stałe i wykonujemy pewne zadania, do procedury możemy przekazywać  parametry, parametry mogą być przekazywane do procedury jak i na zewnątrz. Funkcja to też program ale w wyniku jego  działania otrzymujemy jakąś konkretną wartość.
Tak jak pisałem zarówno w funkcji jak i procedurze mogą być przekazywane wartości, które możemy podzielić na:

-) IN wejściowe, czyli takie które podajemy przy wywołaniu funkcji lub procedury
-) OUT wyjściowe
-) IN OUT czyli wejściowo-wyjściowe

Deklarację robimy zaraz po nazwie procedury, przykład poniżej:

DECLARE
imie VARCHAR2(23):= ‘PIOTR’;
nazwisko VARCHAR2(23):= ‘KOWALSKI’;

PROCEDURE male_litery ( a1 IN OUT VARCHAR2, a2 IN oUT VARCHAR2) AS
BEGIN
a1:= LOWER(a1);
a2:= LOWER(a2);
END male_litery;

BEGIN
male_litery(imie, nazwisko);
DBMS_OUTPUT.PUT_LINE(’imie: ‘|| imie ||’ nazwisko: ‘|| nazwisko );
END;
/

Widzimy w procedurze male_litery mamy dwa parametry a1 i a2 są one typu IN OUT czyli jako wejściowe a także jako  wyjściowe, innymi słowy wejściowe w przypadku jak wartości imie i nazwisko są podstawiane do tej procedury, wyjściowe  to wtedy kiedy w wyniku działania procedury male_litery zostają zwrócone zmienione wartości imie, i nazwisko (w naszym  przypadku litery imienia i nazwisko zostały zamienione na małe.)

W wyniku działania funkcji możemy zwracać wartość nie deklarując po nazwie funkcji, przykład:

FUNCTION male_litery ( a1 IN VARCHAR2, a2 IN VARCHAR2)
RETURN VARCHAR2 AS
a3 VARCHAR2(46);
BEGIN
a3:= LOWER(a1) || ‘ nazwisko:’||LOWER(a2);
RETURN a3;
END male_litery;

Używanie zmiennych i stałych w PL/SQL

Możemy wymienić następujące typy zmiennych i stałych:

-) Numeryczne:
możemy podzielić je na całkowite (integer) i rzeczywiste (real), zmienne całkowite to jak nazwa wskazuje są całkowite  czyli 1, 2, 5, 193 itd całkowite to też te ujemne -4, -65 itp. Natomiast zmienne rzeczywiste to np. 9,345 -4,56 itd.  czyli także liczby które mają wartości ułamkowe po kropce, rzeczywiste zawierają także w swoim zbiorze liczby  całkowite!.
przykłady deklaracji zmiennych numerycznych:

DECLARE
liczba_tajemna NUMBER(4,3);
liczba PLS_INTEGER:=2340; –wartość numeryczna
BEGIN
liczba_tajemna:= 5.985e2; — wartosc numeryczna
liczba_tajemna:= -870.88; — wartosc numeryczna
liczba_tajemna:= -1; — wartosc numeryczna
END;
/

Podstawienie typu
liczba PLS_INTEGER:=2340;
możemy zrobić także w sposób jak poniżej
liczba PLS_INTEGER DEFAULT 2340;

jeżeli chcemy zaznaczyć że zmienna lub stała musi być NOT NULL to wtedy piszemy
liczba NUMBER(3) NOT NULL :=2340;

Zmienne i stałe w bloku PL/SQL-a

Jak już wcześniej pisałem na początku procedury po wyrazie DECLARE jest blok deklarowania zmiennych i stałych. Zmienne  mogą mieć SQL-owe datatype np. DATE, NUMBER, VARCHAR2 lub typy PL/SQL-owe typu BOOLEAN lub PLS_INTEGER.

pensja NUMBER(5);
imie_pracownika VARCHAR2(23);
nazwisko_pracownika VARCHAR2(23);

Można także zadeklarować stałe w tym miejscu (CONSTANT), deklarowanie stałych odbywa się tak samo jak zmienne ale  musimy dodać CONSTANT przed zadeklarowaniem typu stałej, przykład
liczba_drzew CONSTANT NUMBER(4) :=1000;
jak widzimy po deklaracji typu stałej podstawiamy wartość stałej w tym przypadku liczba 1000

Jak pewnie zauważyłeś na końcu każdej linii jest średnik (;) należy o tym pamiętać, jeżeli zapomnimy procedura będzie  zwracać błędy.

12/07/2008

Komentarze w procedurze PL/SQL Oracle

Dobrym zwyczajem nie tylko w procedurach PL/SQL jest używanie komentarzy które pomagają czytać kod tej procedury, ma to zastosowanie jeżeli np. procedura jest modyfikowana przez innego programistę ale także bardzo często programista który tworzył ta procedurę po pewnym czasie zapomina co sam miał na myśli pisząc ją. Dlatego powinno być dobry zwyczajem żeby pisać jak najwięcej komentarzy.

W PL/SQL służą do tego następujące komentarze:

jeżeli chcemy zakomentować tylko jedną linie, ten komentarz wstawiamy na początku linii

/* na początku i */ na końcu tekstu który chcemy zakomentować, ten sposób może być stosowany zarówno w komentarzach jednoliniowych a także w komentarzach wieloliniowych.

zasilane przez WordPress