Du kan bruge SQL-lagrede pro­ce­du­rer til at gemme ofte anvendte fo­re­spørgs­ler og pro­ce­du­rer som ko­de­blok­ke, der nemt kan hentes frem senere. Det sparer dig tid og sikrer, at du ikke behøver at indtaste SQL-sætninger forfra hver gang, du bruger dem.

Hvad er SQL-lagrede pro­ce­du­rer?

Når du arbejder med SQL, er der helt sikkert sætninger, du bruger igen og igen. At skrive komplekse sætninger fra bunden hver gang, du har brug for dem, kan koste tid og øge risikoen for fejl. Med SQL-lagrede pro­ce­du­rer bliver det nemmere at arbejde med til­ba­ge­ven­den­de, komplekse fo­re­spørgs­ler. Du kan bruge dem til at gemme og hente ko­de­blok­ke, som du bruger ofte. På den måde kan du au­to­ma­ti­se­re til­ba­ge­ven­den­de pro­ce­du­rer og gøre din da­ta­hånd­te­ring mere effektiv.

En af fordelene ved SQL-lagrede pro­ce­du­rer er, at man kan gemme stort set alle former for sætninger, der in­de­hol­der SQL-funk­tio­ner, SQL-kom­man­do­er eller SQL-ope­ra­to­rer, og udføre stort set alle former for opgaver. Man kan oprette lagrede pro­ce­du­rer til den på­gæl­den­de handling og kalde dem ved at indsætte PROCEDURE-navnet i al­min­de­li­ge sætninger som f.eks. SQL UPDATE og SQL SELECT. De funk­tio­ner, man kan au­to­ma­ti­se­re med SQL-lagrede pro­ce­du­rer, omfatter op­da­te­rin­ger, fo­re­spørgs­ler, sletning af data og ud­skriv­ning af værdier.

Tip

Lær det grund­læg­gen­de i SQL! Vores in­tro­duk­tion til SQL med eksempler giver dig et hurtigt overblik over de vigtigste funk­tio­ner og regler i sproget.

Hvordan ser syntaksen for SQL-lagrede pro­ce­du­rer ud?

Syntaksen for en given gemt procedure afhænger af den kodeblok, du ønsker at gemme, og kan være mere eller mindre kompleks.

Her er syntaksen for en enkel gemt procedure:

CREATE PROCEDURE Procedure_name (Parameter1 file_type, Parameter2 file_type, …)
AS
BEGIN
(Code block you want to save)
END;
sql

Afhængigt af hvilket da­ta­ba­sesty­rings­sy­stem du bruger, kan syntaksen også se således ud:

CREATE PROCEDURE Procedure_name (Parameter1 file_type, Parameter2 file_type, …)
AS
(Code block you want to save)
GO;
sql

Dette er de relevante parametre:

  • CREATE PROCEDURE: Angiv navnet på din procedure her. Dette er det navn, du vil bruge til at udføre koden eller indsætte den i en anden sætning. Pa­ra­me­tre­ne omfatter de for­skel­li­ge data, der kræves til ko­de­blok­ken, herunder deres filtype.
  • AS: Markerer be­gyn­del­sen på den kodeblok, du vil gemme som en gemt procedure.
  • BEGIN + END: Markerer be­gyn­del­sen og slut­nin­gen af den kodeblok, du vil gemme.
  • GO: Markerer slut­nin­gen af ko­de­blok­ken (har samme funktion som END).

Du kan køre en gemt procedure ved hjælp af denne kode:

EXEC Procedure_name;
sql

Hvad er fordelene ved og an­ven­del­ses­mu­lig­he­der­ne for SQL-lagrede pro­ce­du­rer?

Med SQL-lagrede pro­ce­du­rer kan du gemme stort set enhver SQL-sætning og hente den frem senere. Fordelene ved lagrede pro­ce­du­rer omfatter:

  • Genbrug af kode: Der er visse SQL-kom­man­do­er og -funk­tio­ner, som du vil bruge igen og igen i for­bin­del­se med din database. Ved at gemme både enkle og komplekse sætninger kan du genbruge dem uden at skulle indtaste koden hver gang.
  • Forenklet arbejde med databaser: Når det drejer sig om komplekse opgaver, opdeler gemte pro­ce­du­rer store, komplekse ope­ra­tio­ner i flere mindre pro­ce­du­rer. Ko­de­blok­ke behandles som moduler, der kan in­d­ar­bej­des i den sætning, du arbejder på.
  • Mere ef­fek­ti­vi­tet, bedre ydeevne: Ved at gemme ko­de­blok­ke bliver det nemmere at oprette SQL-sætninger og forbedre ydeevnen i store databaser.
  • Mere sikkerhed: Tildeling af til­la­del­ser til gemte pro­ce­du­rer sikrer, at følsomme data kun kan hentes eller tilgås med til­la­del­se.

Nogle praktiske an­ven­del­ses­ek­semp­ler på SQL-lagrede pro­ce­du­rer fra for­skel­li­ge brancher omfatter:

  • Au­to­ma­ti­se­ring af or­dre­pro­ces­ser og op­da­te­ring af kundedata
  • Over­våg­ning og kontrol af mistæn­ke­li­ge fi­nan­si­el­le transak­tio­ner eller beregning af ren­te­sat­ser
  • Au­to­ma­tisk op­ret­tel­se af tilbud baseret på kundedata, købsad­færd, or­dre­mæng­de og region
  • Beregning af me­d­ar­bej­der­pro­vi­sio­ner baseret på præ­sta­tion
  • Ud­ar­bej­del­se af fi­nans­rap­por­ter og bogføring af transak­tio­ner
  • Sporing, over­våg­ning og syn­kro­ni­se­ring af la­ger­be­hold­ning og indgående ordrer

Eksempler på SQL-lagrede pro­ce­du­rer

Vi vil nu se på to eksempler på SQL-lagrede pro­ce­du­rer.

Henter alle kunder

Lad os sige, at du vil hente alle kundedata fra en tabel ved navn »Kunder«. Det vil se sådan ud:

CREATE PROCEDURE SelectAllCustomers
AS
BEGIN
SELECT * FROM Customers
END;
sql

Valg af ordrer fra en by

Lad os nu sige, at du vil hente alle ordrer fra en bestemt by fra en tabel ved navn »Ordrer«:

CREATE PROCEDURE SelectAllOrdersBristol
AS
BEGIN
SELECT * FROM Orders WHERE City = 'Bristol'
END;
sql

Findes der al­ter­na­ti­ver til SQL-lagrede pro­ce­du­rer?

Der findes flere al­ter­na­ti­ver til SQL-lagrede pro­ce­du­rer, der har en lignende funktion. Disse omfatter:

  • UDF (bru­ger­de­fi­ne­ret funktion): Med UDF’er kan du oprette og gemme dine egne funk­tio­ner ved hjælp af nøg­le­or­det CREATE FUNCTION. Det giver dig mulighed for at integrere komplekse fo­re­spørgs­ler i SQL-sætninger som for­ud­de­fi­ne­re­de funk­tio­ner, uden at du behøver at indtaste hele ko­de­blok­ken.
  • VIEWS: VIEWS giver dig mulighed for at oprette tomme, virtuelle tabeller til analyse af poster med for­ud­de­fi­ne­re­de parametre. Ligesom UDF’er og gemte pro­ce­du­rer kan du indsætte VIEWS som et element i SQL-sætninger.
Gå til ho­ved­me­nu­en