Rozdíl mezi uloženou procedurou a funkcí

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,

  • Funkce jednoho řádku (vrací jediný výsledek pro každý řádek dotazu)

Existují podkategorie funkcí jednoho řádku.

  • Numerická funkce (např .: ABS, SIN, COS)
  • Funkce znaků (např .: CONCAT, INITCAP)
  • Funkce data a času (např .: LAST_DAY, NEXT_DAY)
  • Funkce převodu (např .: TO_CHAR, TO_DATE)
  • Funkce sběru (např .: KARDINALITA, SET)
  • Agregační funkce (Vrátí jeden řádek na základě skupiny řádků. Příklad: AVG, SUM, MAX)
  • Analytické funkce
  • Funkce odkazu na objekt
  • Modelové funkce
  • Uživatelem definované funkce

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í.