sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er en lagret procedure?

Lagrede procedurer er en batch af SQL-sætninger, der kan udføres på et par måder. De fleste større DBM'er understøtter lagrede procedurer; det er dog ikke alle der gør. Du skal bekræfte med din specifikke DBMS-hjælpedokumentation for detaljer. Da jeg er mest fortrolig med SQL Server, vil jeg bruge det som mine eksempler.

For at oprette en lagret procedure er syntaksen ret simpel:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Så for eksempel:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

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

En fordel ved lagrede procedurer er, at du kan centralisere dataadgangslogikken til et enkelt sted, som så er nemt for DBA'er at optimere. Lagrede procedurer har også en sikkerhedsfordel ved, at du kan tildele eksekveringsrettigheder til en lagret procedure, men brugeren behøver ikke at have læse-/skrivetilladelser på de underliggende tabeller. Dette er et godt første skridt mod SQL-injektion.

Lagrede procedurer kommer med ulemper, dybest set vedligeholdelsen forbundet med din grundlæggende CRUD-drift. Lad os sige, at du for hver tabel har en Indsæt, Opdater, Slet og mindst et valg baseret på den primære nøgle, det betyder, at hver tabel vil have 4 procedurer. Tag nu en database af anstændig størrelse med 400 tabeller, og du har 1600 procedurer! Og det forudsætter, at du ikke har dubletter, hvilket du sandsynligvis vil.

Det er her at bruge en ORM eller en anden metode til automatisk at generere dine grundlæggende CRUD-operationer har et væld af fordele.



  1. Android:Hvordan beder man en markør om at opdatere ListView efter sletning af databaserækken?

  2. Avanceret SQL:Variationer og forskellige anvendelsestilfælde af T-SQL Insert Statement

  3. Sådan viser du objektafhængigheder i Access 2016

  4. 4 Fantastiske SQL Server-overvågningsressourcer til databaseadministratorer