Rozdíl je - funkce musí ve výchozí definici vracet hodnotu (jakéhokoli typu), zatímco v případě procedury musíte použít parametry jako OUT
nebo IN OUT
parametry k získání výsledků. Můžete použít funkci v normálním SQL
kde jako nemůžete použít proceduru v SQL
prohlášení.
Některé rozdíly mezi funkcemi a procedurami
-
Funkce vždy vrátí hodnotu pomocí příkazu return, zatímco procedura může vrátit jednu nebo více hodnot prostřednictvím parametrů nebo se nemusí vrátit vůbec. Ačkoli
OUT
parametry lze i nadále používat ve funkcích, nejsou vhodné ani nejsou případy, kdy by to bylo potřeba. PomocíOUT
omezuje použití funkce v příkazu SQL. -
Funkce lze použít v typických příkazech SQL, jako je
SELECT
,INSERT
,UPDATE
,DELETE
,MERGE
, zatímco procedury nemohou. -
Funkce se běžně používají pro výpočty, kde se běžně používají procedury pro provádění obchodní logiky.
-
Oracle poskytuje vytvoření "Function Based Indexes" pro zlepšení výkonu následného SQL příkazu. To platí při provádění funkce na indexovaném sloupci v klauzuli where dotazu.
Více informací o funkcích vs. Postupy zde a zde.