Microsoft SQL stored procedures

Indlæg af Annette Dalgaard     opdateret: 2011-09-21

Microsoft SQL lagrede procedurer er grupper af Transact-SQL ( T-SQL ) kommandoer eller erklæringer er gemt på serveren . Lagrede procedurer bør anvendes i stedet for inline SQL , som er oprettet dynamisk ved anvendelse . Programmer og hjemmesider adgang til en database, som oftest er afhængige af lagrede procedurer til at udføre database kommandoer og hente data . Når den er oprettet , en procedure vil blive gemt på SQL server som en database objekt . Stored procedures har et par vigtige fordele , som berettiger til deres anvendelse i inline SQL , herunder sikkerhed , nem opdateringer og hastighed .

struktur en lagret procedure

En lagrede procedure er opdelt i to hovedafsnit , erklæringen fra den lagrede procedure navn og dets parametre og den gruppe af T-SQL -kommandoer . Parametre er generelt anvendt den samme som almindelige variabler i en T-SQL-sætning , da de er forud med et @ -symbolet og skal deklareres med en datatype . Forskellen mellem lagrede procedure parametre og standard variabler er , at parametre bestået under udførelsen opkald ved anvendelse eller hjemmeside.

oprette eller ændre en lagret procedure

T-SQL kommandoen CREATE PROCEDURE bruges til at lave stored procedures. Følgende er et simpelt eksempel på en lagret procedure .

BRUG MyDatabase
CREATE PROCEDURE dbo. SampleProc
( @ Param1 varchar (20 ))
Som
SELECT
Kol1 ,
Col2
FRA tabelnavn
WHERE Col3=@ Param1

Denne erklæring skal skabe en lagret procedure ved navn SampleProc i MyDatabase . Efter den lagrede procedure er oprettet, kan du bruge ALTER PROCEDURE eller DROP PROCEDURE kommandoer . ALTER PROCEDURE kommando vil opdatere den eksisterende procedure med bemærkning efter det . DROP PROCEDURE kommando vil fjerne proceduren fra databasen .

Brug en lagret procedure

For en ansøgning eller et websted at få adgang til lagrede procedure , en database opkald ved hjælp af EXECUTE kommando sendes til serveren . EXECUTE kommandoen for den lagrede procedure oprettede tidligere ville være følgende :

EXECUTE MyDatabase. dbo. SampleProc @ Param1=' SampleInput '

I eksemplet , en rekord sæt to kolonner ville blive returneret , men kan lagrede procedurer returnere enten et bogstav for succes eller fiasko eller returnere flere resultater datasæt .

Fordelene ved at bruge Stored Procedures

Brug stored procedures i stedet for inline SQL vil give dig en række fordele . Ifølge Microsoft Developer Network Books Online , er fire fordele ved at bruge stored procedures , at de tillader modulære programmering , give hurtigere udførelse , kan reducere trafikken på netværket og kan bruges som en sikkerhedsmekanisme . Opdatering stored procedures er lettere end en ajourføring af inline SQL- siden den lagrede procedure er lagret på serveren på ét sted . Når den lagrede procedure ændres, vil enhver ansøgning eller websted ændre denne procedure har de opdaterede kommandoer . Hvis du har brugt inline SQL , ville ændringen skulle foretages flere gange i stævningen eller et websted kode .

Lagrede procedurer er generelt hurtigere end inline SQL da en lagret procedure vil blive overholdt , da det er oprettet i stedet for som det er udført . Dette vil fremskynde transaktionen lidt . Nogle T-SQL-sætninger kan være flere hundrede linjer af kommandoer . Hvis disse kommandoer er skabt inline , skal de overføres over netværket , men lagrede procedurer behøver kun at have navnet på de overførte procedure . Da lagrede procedurer database objekter, kan de være sikret ligesom en database tabel . Kun visse brugere kan få adgang til at udføre en lagret procedure , hvis det er nødvendigt.

Stored Procedures Best Practices

Der er mange forskellige bedste praksis, som udviklere bør overholde ved udformningen lagrede procedurer . Du bør aldrig bruge præfiks af sp_ da denne kun bruges til system lagrede procedurer som sp_who , sp_executeSQL og andre system-relaterede procedurer . Du bør bruge den fulde sti til databasen genstande, når henvisninger dem i stored procedures . Et eksempel på en fuld sti af et objekt ville være DatabaseName. Schema. ObjectName .


Previous:hvordan man kan undgå null rækker i Oracle SQL Next:sql søgning tutorial



 

Kommentarer

Code:
change