Procedura przechowywana a funkcja
Procedury i funkcje przechowywane to dwa rodzaje bloków programistycznych. Obaj muszą mieć wołające imiona. Te nazwy wywołujące są używane do wywoływania ich wewnątrz innego bloku programistycznego, takiego jak funkcje procedur i pakiety lub zapytania SQL. Oba te typy obiektów akceptują parametry i wykonują zadanie za tymi obiektami. To jest składnia (w ORACLE) do tworzenia procedury składowanej, utwórz lub zamień nazwę procedury procedury (parametry)
jako
początek
wypowiedzi;
wyjątek
exception_handling
end;
A oto składnia do tworzenia funkcji (w ORACLE), utwórz lub zamień funkcję function_name (parametry)
return return_datatype
jako
początek
wypowiedzi;
zwróć zwracaną_wartość/zmienną;
wyjątek;
exception_handling;
end;
Procedury przechowywane
Jak wspomniano powyżej, procedury składowane są nazwane blokami programistycznymi. Akceptują parametry jako dane wejściowe użytkownika i przetwarzają zgodnie z logiką procedury i podają wynik (lub wykonują określoną akcję). Te parametry mogą być typu IN, OUT i INOUT. Deklaracje zmiennych, przypisania zmiennych, instrukcje sterujące, pętle, zapytania SQL i inne wywołania funkcji/procedury/pakietów mogą znajdować się w ciele procedur.
Funkcje
Funkcje to również nazwane bloki programistyczne, które muszą zwracać wartość za pomocą instrukcji RETURN, a zanim zwróci wartość, jej ciało również wykonuje pewne akcje (zgodnie z podaną logiką). Funkcje akceptują również parametry do uruchomienia. Wewnątrz zapytań można wywoływać funkcje. Gdy funkcja jest wywoływana w zapytaniu SELECT, ma zastosowanie do każdego wiersza zestawu wyników zapytania SELECT. Istnieje kilka kategorii funkcji ORACLE. Są,
Funkcje jednowierszowe (zwracają jeden wynik dla każdego wiersza zapytania)
Istnieją podkategorie funkcji jednorzędowych.
- Funkcja numeryczna (np. ABS, SIN, COS)
- Funkcja znaku (np. CONCAT, INITCAP)
- Funkcja daty i godziny (np.: LAST_DAY, NEXT_DAY)
- Funkcje konwersji (np.: TO_CHAR, TO_DATE)
- Funkcja zbierania (np. CARDINALITY, SET)
- Funkcje agregujące (zwraca pojedynczy wiersz na podstawie grupy wierszy. Np.: AVG, SUM, MAX)
- Funkcje analityczne
- Funkcje odniesienia do obiektu
- Funkcje modelu
- Funkcje zdefiniowane przez użytkownika
Jaka jest różnica między funkcją a procedurą składowaną?
• Wszystkie funkcje muszą zwracać wartość za pomocą instrukcji RETURN. Procedury składowane nie zwracają wartości przy użyciu instrukcji RETURN. Instrukcja RETURN wewnątrz procedury zwróci jej kontrolę do programu wywołującego. Parametry OUT mogą służyć do zwracania wartości z procedur składowanych.
• Funkcje mogą być wywoływane wewnątrz zapytań, ale procedury składowane nie mogą być używane wewnątrz zapytań.
• Typ danych RETURN musi być uwzględniony, aby utworzyć funkcję, ale w procedurze składowanej DDL tak nie jest.