# Sådan bruger du SQL-lagrede procedurer

Du kan bruge SQL-lagrede procedurer til at gemme **ofte anvendte forespørgsler og procedurer som kodeblokke**, 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 procedurer?

Når du arbejder med [SQL](https://www.ionos.com/da-dk/digitalguide/server/know-how/hvad-er-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 procedurer bliver det nemmere at arbejde med tilbagevendende, komplekse forespørgsler. Du kan bruge dem til at gemme og hente kodeblokke, som du bruger ofte. På den måde kan du **automatisere tilbagevendende procedurer** og gøre din datahåndtering mere effektiv.

En af fordelene ved SQL-lagrede procedurer er, at man kan gemme **stort set alle former for sætninger**, der indeholder SQL-funktioner, SQL-kommandoer eller SQL-operatorer, og udføre stort set alle former for opgaver. Man kan oprette lagrede procedurer til den pågældende handling og kalde dem ved at indsætte PROCEDURE-navnet i almindelige sætninger som f.eks. SQL UPDATE og SQL SELECT. De funktioner, man kan automatisere med SQL-lagrede procedurer, omfatter opdateringer, forespørgsler, sletning af data og udskrivning af værdier.

Tip Lær det grundlæggende i SQL! Vores [introduktion til SQL med eksempler](https://www.ionos.com/da-dk/digitalguide/server/konfiguration/introduktion-til-sql-med-eksempler/) giver dig et hurtigt overblik over de vigtigste funktioner og regler i sproget.

## Hvordan ser syntaksen for SQL-lagrede procedurer 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**:

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

Afhængigt af hvilket databasestyringssystem du bruger, kan syntaksen også se således ud:

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

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. Parametrene omfatter de forskellige data, der kræves til kodeblokken, herunder deres filtype.
- `AS`: Markerer begyndelsen på den kodeblok, du vil gemme som en gemt procedure.
- `BEGIN` + `END`: Markerer begyndelsen og slutningen af den kodeblok, du vil gemme.
- `GO`: Markerer slutningen af kodeblokken (har samme funktion som `END`).

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

```sql
EXEC Procedure_name;
```

## Hvad er fordelene ved og anvendelsesmulighederne for SQL-lagrede procedurer?

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

- **Genbrug af kode**: Der er visse SQL-kommandoer og -funktioner, som du vil bruge igen og igen i forbindelse 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 procedurer store, komplekse operationer i flere mindre procedurer. Kodeblokke behandles som moduler, der kan indarbejdes i den sætning, du arbejder på.
- **Mere effektivitet, bedre ydeevne**: Ved at gemme kodeblokke bliver det nemmere at oprette SQL-sætninger og forbedre ydeevnen i store databaser.
- **Mere sikkerhed**: Tildeling af tilladelser til gemte procedurer sikrer, at følsomme data kun kan hentes eller tilgås med tilladelse.

Nogle praktiske anvendelseseksempler på SQL-lagrede procedurer fra forskellige brancher omfatter:

- Automatisering af ordreprocesser og opdatering af kundedata
- Overvågning og kontrol af mistænkelige finansielle transaktioner eller beregning af rentesatser
- Automatisk oprettelse af tilbud baseret på kundedata, købsadfærd, ordremængde og region
- Beregning af medarbejderprovisioner baseret på præstation
- Udarbejdelse af finansrapporter og bogføring af transaktioner
- Sporing, overvågning og synkronisering af lagerbeholdning og indgående ordrer

## Eksempler på SQL-lagrede procedurer

Vi vil nu se på to eksempler på SQL-lagrede procedurer.

### Henter alle kunder

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

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

### 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«:

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

## Findes der alternativer til SQL-lagrede procedurer?

Der findes flere alternativer til SQL-lagrede procedurer, der har en lignende funktion. Disse omfatter:

- **UDF (brugerdefineret funktion)**: Med UDF’er kan du oprette og gemme dine egne funktioner ved hjælp af nøgleordet `CREATE FUNCTION`. Det giver dig mulighed for at integrere komplekse forespørgsler i SQL-sætninger som foruddefinerede funktioner, uden at du behøver at indtaste hele kodeblokken.
- **VIEWS**: VIEWS giver dig mulighed for at oprette tomme, virtuelle tabeller til analyse af poster med foruddefinerede parametre. Ligesom UDF’er og gemte procedurer kan du indsætte VIEWS som et element i SQL-sætninger.


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/server/konfiguration/sql-lagrede-procedurer/](https://www.ionos.com/da-dk/digitalguide/server/konfiguration/sql-lagrede-procedurer/) for AI/LLM consumption.