sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är en lagrad procedur?

Lagrade procedurer är en grupp SQL-satser som kan köras på ett par sätt. De flesta större DBM:er stöder lagrade procedurer; det gör dock inte alla. Du måste verifiera med din specifika DBMS-hjälpdokumentation för detaljer. Eftersom jag är mest bekant med SQL Server kommer jag att använda det som mina exempel.

För att skapa en lagrad procedur är syntaxen ganska enkel:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Så till exempel:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

    SELECT * from [Users]
    WHERE ISNULL(@login,login)=login

En fördel med lagrade procedurer är att du kan centralisera dataåtkomstlogik till en enda plats som sedan är lätt för DBA:er att optimera. Lagrade procedurer har också en säkerhetsfördel genom att du kan ge exekveringsrättigheter till en lagrad procedur men användaren behöver inte ha läs-/skrivbehörighet på de underliggande tabellerna. Detta är ett bra första steg mot SQL-injektion.

Lagrade procedurer kommer med nackdelar, i princip underhållet i samband med din grundläggande CRUD-operation. Låt oss säga att du för varje tabell har en Infoga, Uppdatera, Ta bort och minst ett urval baserat på primärnyckeln, det betyder att varje tabell kommer att ha 4 procedurer. Ta nu en anständig storleksdatabas med 400 tabeller, och du har 1600 procedurer! Och det är förutsatt att du inte har dubbletter, vilket du förmodligen kommer att göra.

Det är här att använda en ORM eller någon annan metod för att automatiskt generera dina grundläggande CRUD-operationer har massor av meriter.



  1. Installera Oracle 11g Release 2 Enterprise Edition på Windows 7 32-bitars

  2. Hur man använder förberedda uttalanden med Postgres

  3. Skillnaden mellan en användare och en inloggning i SQL Server

  4. Tabeller och index jämfört med hårddisk och SSD