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;

zasilane przez WordPress