Funktioner i SQL Server er de databaseobjekter, der indeholder en sæt af SQL-sætninger til at udføre en bestemt opgave . En funktion accepterer inputparametre, udfører handlinger og returnerer derefter resultatet. Vi skal bemærke, at funktioner altid returnerer enten en enkelt værdi eller en tabel. Hovedformålet med funktioner er let at replikere den fælles opgave. Vi kan bygge funktioner én gang og kan bruge dem flere steder baseret på vores behov. SQL Server tillader ikke brug af funktionerne til at indsætte, slette eller opdatere poster i databasetabellerne.
Følgende er reglerne for oprettelse af SQL Server-funktioner:
hvordan man omdøber en mappe i linux
- En funktion skal have et navn, og navnet må ikke begynde med et specialtegn såsom @, $, # eller andre lignende tegn.
- SELECT-sætninger er de eneste, der fungerer med funktioner.
- Vi kan bruge en funktion hvor som helst, såsom AVG, COUNT, SUM, MIN, DATE og andre funktioner med SELECT-forespørgslen i SQL.
- Når en funktion kaldes, kompilerer den.
- Funktioner skal returnere en værdi eller et resultat.
- Funktioner bruger kun inputparametre.
- Vi kan ikke bruge TRY- og CATCH-sætninger i funktioner.
Typer af funktioner
SQL Server kategoriserer funktionerne i to typer:
- Systemfunktioner
- Brugerdefinerede funktioner
Lad os beskrive begge typer i detaljer.
Systemfunktioner
Funktioner, der er defineret af systemet, er kendt som systemfunktioner. Med andre ord, alle indbyggede funktioner understøttet af serveren omtales som systemfunktioner. De indbyggede funktioner sparer os tid, mens vi udfører den specifikke opgave. Disse typer funktioner fungerer normalt med SQL SELECT-sætningen til at beregne værdier og manipulere data.
Her er listen over nogle systemfunktioner, der bruges i SQL Server:
- Strengfunktioner (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
- Dato- og tidsfunktioner (datetime, datetime2, smalldatetime)
- Samlede funktioner (COUNT, MAX, MIN, SUM, AVG)
- Matematiske funktioner (ABS, POWER, PI, EXP, LOG)
- Rangeringsfunktioner (RANK, DENSE_RANK, ROW_NUMBER, NTILE)
Følgende billede viser alle de indbyggede databasefunktioner, der bruges i SQL Server:
Brugerdefinerede funktioner
Funktioner, der er oprettet af brugeren i systemdatabasen eller en brugerdefineret database er kendt som brugerdefinerede funktioner. UDF-funktionerne accepterer parametre, udfører handlinger og returnerer resultatet. Disse funktioner hjælper os med at forenkle vores udvikling ved at indkapsle kompleks forretningslogik og gøre den tilgængelig til genbrug overalt baseret på behovene. De brugerdefinerede funktioner gør den nødvendige kode til at forespørge data meget nemmere at skrive. De forbedrer også forespørgslens læsbarhed og funktionalitet, samt giver andre brugere mulighed for at replikere de samme procedurer.
SQL Server kategoriserer de brugerdefinerede funktioner hovedsageligt i to typer:
- Skalære funktioner
- Tabel-vurderede funktioner
Her er beskrivelserne af disse UDF-funktioner.
Skalære funktioner
Skalær funktion i SQL Server altid accepterer parametre, enten enkelte eller flere og returnerer en enkelt værdi . De skalære funktioner er nyttige i forenklingen af vores kode. Antag, at vi måske har en kompleks beregning, der vises i en række forespørgsler. I et sådant tilfælde kan vi bygge en skalarfunktion, der indkapsler formlen og bruger den i hver forespørgsel i stedet for i hver forespørgsel.
Følgende er syntaksen, der illustrerer oprettelsen af skalarfunktion i SQL Server:
CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
Ovenstående syntaksparametre er beskrevet nedenfor:
Vi vil først definere funktionsnavnet efter OPRET FUNKTION søgeord. Navnet på skemaet er valgfrit. Hvis vi ikke vil definere skemanavnet, bruger SQL Server standardskemaet dbo . Dernæst vil vi definere listen over parametre omgivet i parentes. For det tredje vil vi skrive udsagn for funktionen og derefter i VENDER TILBAGE sætning, definere datatypen for returværdien. Til sidst har vi tilføjet RETURN-sætningen for at returnere en værdi inde i funktionens krop.
Eksempel
Dette eksempel vil oprette en funktion til beregne nettoomsætningen baseret på mængde, pris og rabatværdi:
CREATE FUNCTION udfNet_Sales( @quantity INT, @price DEC(10,2), @discount DEC(3,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @price * (1 - @discount); END;
Nu kan vi bruge denne funktion til at beregne nettosalget af enhver salgsordre i den definerede tabel.
Følgende billedvisning, hvor vi kan finde skalarfunktionerne:
Vi kan kalde de skalære funktioner det samme som den indbyggede funktion i SQL Server. For eksempel kan vi kalde ovenstående udfNet_Sales-funktion som nedenfor:
SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales;
Udførelse af denne funktion vil returnere nettoomsætningen:
SQL Server tillader os også for at ændre den skalære funktion ved at bruge ALTER søgeord. Her er syntaksen til at gøre dette:
ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
Vi kan bruge nedenstående sætning til at fjerne skalarfunktionen fra SQL Server-databasen:
DROP FUNCTION [schema_name.]function_name;
Tabel-vurderede funktioner
Tabel-vurderede funktioner i SQL Server er brugerdefineret funktion der returnerer data af en tabeltype. Da denne funktion er returtype er en tabel , kan vi bruge det på samme måde, som vi bruger et bord.
awt java
Vi kan kategorisere den tabelværdisatte funktion i to typer:
1. Inline tabel-værdier funktioner
Denne UDF-funktion returnerer en tabelvariabel baseret på handlingen udført af funktionen. En enkelt SELECT-sætning skal bruges til at bestemme værdien af tabelvariablen.
Eksempel
kort java iterator
Nedenstående eksempel vil oprette en tabelværdifunktion og hente dataene fra medarbejdertabellen:
--It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee)
I denne syntaks er RETUR TABEL angiver, at funktionen returnerer en tabel. Da der ikke er nogen BEGYND...SLUT erklæring, forespørger det blot data fra medarbejdertabellen. Også, hvis den ikke har nogen parametre, vil den blive kaldt direkte.
Vi kan kalde de tabelværdisatte funktioner ved at bruge FRA klausul af VÆLG forespørgsel. For eksempel , kan vi kalde ovenstående udf_GetEmployee fungerer som nedenfor:
SELECT * FROM udf_GetEmployee();
Udførelse af denne funktion vil returnere følgende resultat:
SQL Server giver os også mulighed for at ændre de tabelværdierede funktioner ved at bruge ALTER nøgleordet i stedet for CREATE nøgleordet. Resten af manuskriptet er det samme.
Multi-sætning tabel-værdi-funktioner (MSTVF)
Denne UDF-funktion returnerer en tabelvariabel baseret på den handling, funktionen udfører. Det kan indeholde enkelte eller flere udsagn for at producere resultatet, og det er også en funktion, der returnerer resultatet af flere udsagn i tabelform. Det er nyttigt, fordi vi kan udføre flere sætninger i denne funktion og få aggregerede resultater i den returnerede tabel. Vi kan definere denne funktion ved at bruge en tabelvariabel som returværdi. Inde i funktionen udfører vi flere forespørgsler og indsætter data i denne tabelvariabel.
Følgende eksempel opretter et funktionsnavn 'FLERE VÆRDIER' der returnerer ' @medarbejder' bord. Den indeholder tre felter med navnet id, emp_name og løn fra 'Medarbejder' tabel ved hjælp af INSERT-sætning, og bruger derefter UPDATE-sætning til at opdatere medarbejdernavnet.
CREATE FUNCTION MULTIVALUED() RETURNS @Employee TABLE (id INT, emp_name VARCHAR(50), salary INT) AS BEGIN INSERT INTO @Employee SELECT E.id, E.emp_name, E.salary FROM Employee E; UPDATE @Employee SET emp_name = 'Graeme Smith' WHERE id = 3; RETURN END
Vi kan kalde funktionerne med flere sætninger tabelværdier ved at bruge FROM-sætningen i SELECT-forespørgslen. For eksempel , kan vi kalde ovenstående funktion som nedenfor:
SELECT * FROM MULTIVALUED();
Udførelse af denne funktion vil returnere følgende resultat:
Hvornår skal tabelvurderede funktioner bruges?
Funktioner med tabelværdi bruges almindeligvis som parameteriserede visninger. Funktioner med tabelværdi er mere fleksible end lagrede procedurer, fordi de kan bruges overalt, hvor der bruges tabeller.
Konklusion
Denne artikel vil forklare en komplet oversigt over funktioner, der bruges i SQL Server. Her har vi hovedsageligt lært to typer funktioner, der bruges i SQL Serveren: system- og brugerdefinerede funktioner.