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ż
OUT
parametry 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 zOUT
parametr 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.