Разликата е, че функцията трябва да връща стойност (от всякакъв тип) по подразбиране за нея, докато в случай на процедура трябва да използвате параметри като OUT или IN OUT параметри, за да получите резултатите. Можете да използвате функция в нормален SQL където не можете да използвате процедура в SQL изявления.
Някои разлики между функции и процедури
-
Функцията винаги връща стойност, използвайки израза return, докато процедурата може да върне една или повече стойности чрез параметри или може да не върне изобщо. Въпреки това,
OUTпараметрите все още могат да се използват във функции, те не са препоръчителни, нито има случаи, в които може да се наложи да се направи това. Използване наOUTпараметър ограничава използването на функция в SQL изявление. -
Функциите могат да се използват в типични SQL изрази като
SELECT,INSERT,UPDATE,DELETE,MERGE, докато процедурите не могат. -
Функциите обикновено се използват за изчисления, докато процедурите обикновено се използват за изпълнение на бизнес логика.
-
Oracle предоставя предоставянето на създаване на „Функционално базирани индекси“ за подобряване на производителността на последващия SQL израз. Това важи при изпълнение на функцията върху индексирана колона в клауза where на заявка.
Повече информация за функции срещу Процедури тук и тук.