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

Hvad er en skalær UDF i SQL Server?

I SQL Server er en skalær UDF eller skalær brugerdefineret funktion en brugerdefineret funktion, der returnerer en enkelt værdi.

Dette er i modsætning til en funktion med tabelværdi, som returnerer et resultatsæt i form af en tabel.

Brugerdefinerede funktioner kan skrives som enten T-SQL UDF'er eller CLR (Common Language Runtime) UDF'er. CLR giver dig mulighed for at oprette UDF'er i administreret kode ved hjælp af et hvilket som helst .NET Framework-programmeringssprog. Disse funktioner er derefter tilgængelige for T-SQL eller anden administreret kode.

Eksempel 1 – Basic Scalar UDF

Her er et eksempel på koden, der blev brugt til at oprette en grundlæggende T-SQL skalar UDF.

OPRET FUNKTION dbo.ufn_discountPrice( @pris DECIMAL(12,2), @rabat DECIMAL(12,2) ) RETURNERER DECIMAL (12,2)ASBEGIN RETUR @pris * (1 - @rabat);END; 

Denne skalære UDF accepterer to parametre; @price og @discount . Disse sendes ind i funktionen som argumenter, når funktionen aktiveres. Funktionen tager værdien af ​​disse argumenter, udfører en beregning ved hjælp af disse værdier og returnerer derefter den resulterende værdi. I dette tilfælde returneres den nedsatte pris.

Eksempel 2 – Aktiver UDF

Når UDF'en er blevet oprettet, kan den aktiveres i T-SQL-koden, når som helst du har brug for den.

Her er et eksempel på at påkalde UDF:

VÆLG dbo.ufn_discountPrice(100, .2) SOM resultat;

Resultat

+----------+| Resultat ||--------|| 80,00 |+----------+

Du kan også bruge skalære UDF'er i beregnede kolonner. Dette kan være særligt praktisk, hvis du har brug for den beregnede kolonne for at få adgang til data i en anden tabel.

Funktionsmuligheder

Når du opretter en skalar UDF, er der forskellige muligheder, som du kan anvende på funktionen.

For eksempel kan du angive, om det skal være skemabundet eller ej. Du kan angive, at det skal være krypteret. Du kan også angive en EXECUTE AS klausul for at specificere sikkerhedskonteksten, under hvilken den brugerdefinerede funktion udføres.

Se Microsoft-dokumentationen for en detaljeret liste over muligheder, du kan angive, når du opretter eller ændrer en brugerdefineret funktion.

Parameterdatatype

For T-SQL-funktioner er alle datatyper, inklusive CLR brugerdefinerede typer og brugerdefinerede tabeltyper, tilladt undtagen tidsstempel og den ikke-skalære markør og tabel typer.

For CLR-funktioner er alle datatyper, inklusive CLR brugerdefinerede typer, tilladt undtagen tekst , ntekst , billede , brugerdefinerede tabeltyper, tidsstempel datatyper og den ikke-skalære markør og tabel typer.

Returdatatype

Returdatatypen for T-SQL skalære UDF'er kan være enhver datatype undtagen tidsstempel og den ikke-skalære markør og tabel typer.

CLR-funktioner kan bruge enhver datatype undtagen tekst , ntekst , billede , tidsstempel , og den ikke-skalære markør og tabel typer.

Både T-SQL- og CLR-funktioner kan have en CLR-brugerdefineret type for dens returværdi.


  1. Få liste over alle null- og ikke-nul-kolonner i SQL Server-databasen - SQL Server / T-SQL vejledning del 53

  2. bestemme tegnsættet for en tabel/database?

  3. Sådan konfigureres en ekstern MySQL-forbindelse

  4. Eksekverer sæt SQL-forespørgsler ved hjælp af batch-fil?