Съхранените процедури са партида от SQL оператори, които могат да бъдат изпълнени по няколко начина. Повечето основни DBM поддържат съхранени процедури; обаче не всички го правят. Ще трябва да проверите с вашата конкретна помощна документация за СУБД за подробности. Тъй като съм най-запознат със SQL Server, ще го използвам като мои мостри.
За да създадете съхранена процедура, синтаксисът е доста прост:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Така например:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Предимството на съхранените процедури е, че можете да централизирате логиката за достъп до данни на едно място, което след това е лесно за оптимизиране на DBA. Съхранените процедури също имат предимство за сигурността, тъй като можете да предоставите права за изпълнение на съхранена процедура, но потребителят няма да има нужда да има разрешения за четене/запис на основните таблици. Това е добра първа стъпка срещу SQL инжектирането.
Съхранените процедури идват с недостатъци, основно поддръжката, свързана с основната ви CRUD операция. Да приемем, че за всяка таблица имате Insert, Update, Delete и поне един избор въз основа на първичния ключ, което означава, че всяка таблица ще има 4 процедури. Сега вземете база данни с приличен размер от 400 таблици и имате 1600 процедури! И това е при условие, че нямате дубликати, което вероятно ще имате.
Това е мястото, където използването на ORM или някакъв друг метод за автоматично генериране на вашите основни CRUD операции има много предимства.