Opgeslagen procedures zijn een reeks SQL-instructies die op een aantal manieren kunnen worden uitgevoerd. De meeste grote DBM's ondersteunen opgeslagen procedures; echter niet allemaal. U moet de details van uw specifieke DBMS-helpdocumentatie verifiëren. Omdat ik het meest bekend ben met SQL Server, zal ik dat als mijn voorbeelden gebruiken.
Om een opgeslagen procedure te maken, is de syntaxis vrij eenvoudig:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Dus bijvoorbeeld:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Een voordeel van opgeslagen procedures is dat u de logica voor gegevenstoegang op één plaats kunt centraliseren, die vervolgens gemakkelijk door DBA's kan worden geoptimaliseerd. Opgeslagen procedures hebben ook een beveiligingsvoordeel doordat u uitvoeringsrechten kunt verlenen aan een opgeslagen procedure, maar de gebruiker hoeft geen lees-/schrijfrechten te hebben voor de onderliggende tabellen. Dit is een goede eerste stap tegen SQL-injectie.
Opgeslagen procedures hebben nadelen, in feite het onderhoud dat hoort bij uw basis CRUD-bewerking. Laten we zeggen dat u voor elke tabel een Insert, Update, Delete en ten minste één selectie hebt op basis van de primaire sleutel, dat betekent dat elke tabel 4 procedures zal hebben. Neem nu een behoorlijke database van 400 tabellen en je hebt 1600 procedures! En dat is ervan uitgaande dat je geen duplicaten hebt, wat waarschijnlijk wel het geval zal zijn.
Dit is waar het gebruik van een ORM of een andere methode om uw basis CRUD-bewerkingen automatisch te genereren, veel verdienste heeft.