Uložené procedury jsou dávkou příkazů SQL, které lze provést několika způsoby. Většina hlavních DBM podporuje uložené procedury; ne však všichni ano. Konkrétní údaje si budete muset ověřit ve své konkrétní dokumentaci nápovědy DBMS. Protože jsem nejlépe obeznámen s SQL Serverem, použiji jej jako své vzorky.
Pro vytvoření uložené procedury je syntaxe poměrně jednoduchá:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Takže například:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Výhodou uložených procedur je to, že můžete centralizovat logiku přístupu k datům na jediné místo, které je pak pro DBA snadné optimalizovat. Uložené procedury mají také výhodu zabezpečení v tom, že můžete udělit práva ke spouštění uložené proceduře, ale uživatel nebude muset mít oprávnění ke čtení/zápisu na podkladové tabulky. Toto je dobrý první krok proti SQL injection.
Uložené procedury mají své nevýhody, v podstatě údržbu spojenou s vaším základním provozem CRUD. Řekněme, že pro každou tabulku máte Insert, Update, Delete a alespoň jeden výběr na základě primárního klíče, to znamená, že každá tabulka bude mít 4 procedury. Nyní si vezměte slušnou databázi 400 tabulek a máte 1600 procedur! A to za předpokladu, že nemáte duplikáty, což pravděpodobně budete.
To je místo, kde použití ORM nebo nějaké jiné metody k automatickému generování vašich základních operací CRUD má spoustu výhod.