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