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

Introduktion til brugerdefinerede funktioner i SQL Server

SQL Server leveres med en samling af indbyggede funktioner, der sætter dig i stand til at udføre en række forskellige operationer. Hver indbygget funktion tjener et bestemt formål og kan ikke ændres. Hvis en funktion tjener dit formål, kan du gå videre og bruge den.

Men hvad hvis du ikke kan finde en funktion, der tjener dit formål?

Så er det tid til at skrive din egen brugerdefinerede funktion.

Hvad er en brugerdefineret funktion?

En brugerdefineret funktion (UDF) er en rutine, der kan tage parametre, udføre beregninger eller andre handlinger og returnere et resultat. Og som navnet antyder, er det defineret og oprettet af brugeren. I dette tilfælde er "brugeren" SQL-programmøren, DBA eller den, der har skrevet funktionen.

Udtrykket brugerdefineret funktion adskiller den fra de indbyggede funktioner, der leveres med SQL Server.

Du kan angive, om UDF'en vil acceptere nogen parametre eller ej, og i så fald deres navne, datatyper osv. Du kan f.eks. skrive en UDF, der accepterer et produkt-id som et argument. Funktionen kan så bruge det i sin beregning. Det betyder, at outputtet af funktionen vil afhænge af det input, der leveres til den, når den aktiveres.

Når en UDF er blevet oprettet, kan den påkaldes.

Brug af en brugerdefineret funktion

Koden inde i funktionen udføres ikke, når funktionen oprettes. Den udføres kun, når funktionen kaldes .

At "kalde" en funktion omtales nogle gange som "kalder" en funktion. Det er, når du får funktionen til at gøre, hvad den er lavet til at gøre. I bund og grund opretter du en funktion, og så sidder den bare og venter på at blive aktiveret.

Du kan kalde en UDF fra din T-SQL-kode, ligesom du ville kalde en systemfunktion. For eksempel kan du bruge en UDF i en WHERE klausul for at indsnævre resultaterne af en SELECT udmelding. Du kan også bruge det i listen over kolonner for at returnere.

UDF'er kan også bruges i beregnede kolonner. Dette kan være praktisk, hvis du nogensinde har brug for en beregnet kolonne for at få adgang til data i en anden kolonne.

Parametre

En brugerdefineret funktion kan acceptere op til 1024 inputparametre. Du kan dog også definere en funktion uden nogen parametre, hvis det er nødvendigt.

Et eksempel på en indbygget funktion uden nogen parametre er GETDATE() . Denne funktion returnerer simpelthen det aktuelle databasesystems tidsstempel. Det er ikke nødvendigt at videregive nogen parametre for at få det.

Et eksempel på en brugerdefineret funktion med en enkelt parameter kunne være en, der returnerer en kundes kontaktoplysninger baseret på kundens id. Når du kalder funktionen videregiver du kundens ID til funktionen som en parameter. Funktionen kan derefter slå kundens detaljer op og returnere dem i returvariablen. Hvis du indtaster en anden kundes ID, returnerer funktionen oplysningerne for den pågældende kunde.

Fordele ved brugerdefinerede funktioner

Nogle af de vigtigste fordele ved UDF'er inkluderer følgende.

Modulær programmering
UDF'er giver dig mulighed for at skrive kode én gang, og derefter kalde den så mange gange som nødvendigt. Ingen grund til at omskrive den samme kode, hver gang du skal gøre det samme. Kald blot funktionen i stedet for. Dette er også en fordel, hvis noget ændrer sig. Du behøver kun at opdatere det ét sted – funktionen. Hvis du ikke brugte funktionen, skulle du opdatere den flere steder i hele din applikation.
Ydeevne
UDF'er reducerer kompileringsomkostningerne for T-SQL-koden ved at cache planerne og genbruge dem til gentagne eksekveringer. UDF'en behøver ikke at blive genparset og re-optimeret med hver brug. Dette resulterer i meget hurtigere eksekveringstider.
Reduceret netværkstrafik
En operation, der filtrerer data baseret på en kompleks begrænsning, der ikke kan udtrykkes i et enkelt skalært udtryk, kan udtrykkes som en funktion. Funktionen kan derefter aktiveres i WHERE klausul for at reducere antallet af rækker, der sendes til klienten.

UDF'er kan også have andre, mere specifikke fordele, som i det tidligere eksempel, som jeg nævnte med den beregnede kolonne, der tilgår data i en anden tabel.

Typer af brugerdefinerede funktioner

Der er to typer T-SQL brugerdefinerede funktioner:

Skalære funktioner
Brugerdefinerede skalarfunktioner returnerer en enkelt dataværdi. Du definerer værdiens type i funktionen. Returtypen kan være enhver datatype undtagen tekst , ntekst , billede , markør og tidsstempel .
Tabelværdierede funktioner
Tabelværdi-funktioner (TVF'er) returnerer en tabel. Deres returtype er derfor tabel . Der er to typer TVF:inline TVF og multi-statement TVF. En inline TVF har ikke en funktionskropp. Dens returtabel er resultatet af en enkelt SELECT udmelding. En TVF med flere erklæringer har på den anden side en funktion. Med TVF'er med flere sætninger angiver du tabellens struktur i returvariablen.

Du kan også oprette skalære og tabelværdierede funktioner som common language runtime (CLR) brugerdefinerede funktioner.

Fra og med SQL Server 2005 (9.x) kan du skrive brugerdefinerede funktioner i et hvilket som helst Microsoft .NET Framework-programmeringssprog, såsom Microsoft Visual Basic .NET eller Microsoft Visual C#.


  1. Sådan installeres Libreoffice på Ubuntu 16.04

  2. Sådan får du sidste række pr. gruppe i PostgreSQL

  3. Oracle - Hvordan får jeg den faktiske størrelse af en specifik RÆKKE?

  4. 6 sjove fakta om Microsoft, som du sandsynligvis ikke kender!