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
OUTparametry lze i nadále používat ve funkcích, nejsou vhodné ani nejsou případy, kdy by to bylo potřeba. PomocíOUTomezuje 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.