sql >> Database >  >> RDS >> Sqlserver

Wat is een opgeslagen procedure?

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.



  1. SQL-query voor voortschrijdend gemiddelde van 7 dagen in SQL Server

  2. MySQL GREATEST()-functie - Vind het grootste argument in een lijst met argumenten

  3. Een rapport groeperen op meerdere velden in Access 2016

  4. Groeperen met een Case Statement