Różnica polega na tym, że funkcja musi zwracać wartość (dowolnego typu) domyślną jej definicję, podczas gdy w przypadku procedury należy użyć parametrów takich jak OUT lub IN OUT parametry, aby uzyskać wyniki. Możesz użyć funkcji w normalnym SQL gdzie ponieważ nie możesz użyć procedury w SQL oświadczenia.
Niektóre różnice między funkcjami i procedurami
-
Funkcja zawsze zwraca wartość za pomocą instrukcji return, podczas gdy procedura może zwrócić jedną lub więcej wartości przez parametry lub może nie zwracać ich wcale. Chociaż
OUTparametry nadal mogą być używane w funkcjach, nie są one zalecane ani nie ma przypadków, w których można by to zrobić. Korzystanie zOUTparametr ogranicza użycie funkcji w instrukcji SQL. -
Funkcje mogą być używane w typowych instrukcjach SQL, takich jak
SELECT,INSERT,UPDATE,DELETE,MERGE, podczas gdy procedury nie. -
Funkcje są zwykle używane do obliczeń, podczas gdy procedury są zwykle używane do wykonywania logiki biznesowej.
-
Oracle zapewnia możliwość tworzenia „indeksów opartych na funkcjach” w celu poprawy wydajności kolejnych instrukcji SQL. Dotyczy to wykonywania funkcji na indeksowanej kolumnie w klauzuli where zapytania.
Więcej informacji na temat funkcji vs. Procedury tutaj i tutaj.