Uložená procedura vs. funkce
Uložené procedury a funkce jsou dva typy programovacích bloků. Oba musí mít volací jména. Tato volací jména se používají k jejich volání uvnitř jiného programovacího bloku, jako jsou procedury funkcí a balíčky nebo dotazy SQL. Oba tyto typy objektů přijímají parametry a provádějí úkol za těmito objekty. Toto je syntaxe (v ORACLE) pro vytvoření uložené procedury,
vytvořit nebo nahradit procedurename procedurename (parametry)
tak jako
začít
prohlášení;
výjimka
výjimka_handling
konec;
A zde je syntaxe pro vytvoření funkce (v ORACLE),
vytvoření nebo nahrazení funkce function_name (parametry)
return return_datatype
tak jako
začít
prohlášení;
return return_value / variable;
výjimka;
výjimka_handling;
konec;
Uložené procedury
Jak je uvedeno výše, uložené procedury se nazývají programovací bloky. Přijímají parametry jako uživatelský vstup a zpracovávají podle logiky postupu a poskytují výsledek (nebo provádějí konkrétní akci). Tyto parametry mohou být typu IN, OUT a INOUT. Deklarace proměnných, přiřazení proměnných, kontrolní příkazy, smyčky, dotazy SQL a další funkce / volání procedur / balíčků mohou být uvnitř těla procedur.
Funkce
Funkce jsou také pojmenovány programovací bloky, které musí vracet hodnotu pomocí příkazu RETURN, a než vrátí hodnotu, provede její tělo také některé akce (podle dané logiky). Funkce také přijímají parametry ke spuštění. Funkce lze vyvolat uvnitř dotazů. Když je funkce vyvolána uvnitř dotazu SELECT, vztahuje se na každý řádek sady výsledků dotazu SELECT. Existuje několik kategorií funkcí ORACLE. Oni jsou,
Existují podkategorie funkcí jednoho řádku.
Jaký je rozdíl mezi funkcí a uloženou procedurou? • Všechny funkce musí vrátit hodnotu pomocí příkazu RETURN. Uložené procedury nevracejí hodnoty pomocí příkazu RETURN. Příkaz RETURN uvnitř procedury vrátí svou kontrolu volajícímu programu. Parametry OUT lze použít k vrácení hodnot z uložených procedur. • Funkce lze volat v dotazech, ale uložené procedury nelze v dotazech použít. • Pro vytvoření funkce musí být zahrnut datový typ RETURN, ale v uložené proceduře DDL to není. |