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;