Funktioner i SQL Server är de databasobjekt som innehåller en uppsättning SQL-satser för att utföra en specifik uppgift . En funktion accepterar inmatningsparametrar, utför åtgärder och returnerar sedan resultatet. Vi bör notera att funktioner alltid returnerar antingen ett enskilt värde eller en tabell. Huvudsyftet med funktioner är att enkelt replikera den gemensamma uppgiften. Vi kan bygga funktioner en gång och kan använda dem på flera platser utifrån våra behov. SQL Server tillåter inte användning av funktionerna för att infoga, ta bort eller uppdatera poster i databastabellerna.
Följande är reglerna för att skapa SQL Server-funktioner:
- En funktion måste ha ett namn och namnet får inte börja med ett specialtecken som @, $, # eller andra liknande tecken.
- SELECT-satser är de enda som fungerar med funktioner.
- Vi kan använda en funktion var som helst som AVG, COUNT, SUM, MIN, DATE och andra funktioner med SELECT-frågan i SQL.
- Närhelst en funktion anropas kompileras den.
- Funktioner måste returnera ett värde eller resultat.
- Funktioner använder endast inmatningsparametrar.
- Vi kan inte använda TRY- och CATCH-satser i funktioner.
Typer av funktioner
SQL Server kategoriserar funktionerna i två typer:
- Systemfunktioner
- Användardefinierade funktioner
Låt oss beskriva båda typerna i detalj.
java om annat
Systemfunktioner
Funktioner som definieras av systemet kallas systemfunktioner. Med andra ord, alla inbyggda funktioner som stöds av servern kallas systemfunktioner. De inbyggda funktionerna sparar tid när vi utför den specifika uppgiften. Dessa typer av funktioner fungerar vanligtvis med SQL SELECT-satsen för att beräkna värden och manipulera data.
Här är listan över några systemfunktioner som används i SQL Server:
- Strängfunktioner (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
- Datum- och tidsfunktioner (datetime, datetime2, smalldatetime)
- Aggregerade funktioner (COUNT, MAX, MIN, SUM, AVG)
- Matematiska funktioner (ABS, POWER, PI, EXP, LOG)
- Rankningsfunktioner (RANK, DENSE_RANK, ROW_NUMBER, NTILE)
Följande bild visar alla inbyggda databasfunktioner som används i SQL Server:
Användardefinierade funktioner
Funktioner som är skapad av användaren i systemdatabasen eller en användardefinierad databas kallas användardefinierade funktioner. UDF-funktionerna accepterar parametrar, utför åtgärder och returnerar resultatet. Dessa funktioner hjälper oss att förenkla vår utveckling genom att kapsla in komplex affärslogik och göra den tillgänglig för återanvändning var som helst utifrån behoven. De användardefinierade funktionerna gör koden som behövs för att fråga data mycket lättare att skriva. De förbättrar också frågeläsbarheten och funktionaliteten, samt tillåter andra användare att replikera samma procedurer.
SQL Server kategoriserar de användardefinierade funktionerna huvudsakligen i två typer:
int till sträng i java
- Skalära funktioner
- Tabell-värderade funktioner
Här är beskrivningarna av dessa UDF-funktioner.
Skalära funktioner
Skalär funktion i SQL Server alltid accepterar parametrar, antingen enstaka eller flera och returnerar ett enda värde . De skalära funktionerna är användbara för att förenkla vår kod. Anta att vi kan ha en komplex beräkning som visas i ett antal frågor. I ett sådant fall kan vi bygga en skalär funktion som kapslar in formeln och använder den i varje fråga istället för i varje fråga.
Följande syntax illustrerar skapandet av en skalär funktion i SQL Server:
CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
Syntaxparametrarna ovan beskrivs nedan:
Vi kommer först att definiera funktionsnamnet efter SKAPA FUNKTION nyckelord. Namnet på schemat är valfritt. Om vi inte kommer att definiera schemanamnet, använder SQL Server standardschema dbo . Därefter kommer vi att definiera listan över parametrar inom parentes. För det tredje kommer vi att skriva påståendena för funktionen och sedan, i RETURER uttalande, definiera datatypen för returvärdet. Slutligen har vi lagt till RETURN-satsen för att returnera ett värde inuti funktionens kropp.
Exempel
Detta exempel kommer att skapa en funktion för att beräkna nettoomsättningen baserat på kvantitet, pris och rabattvärde:
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 använda den här funktionen för att beräkna nettoförsäljningen för valfri försäljningsorder i den definierade tabellen.
Följande bildvisning där vi kan hitta de skalära funktionerna:
byte array till sträng
Vi kan kalla de skalära funktionerna för samma som den inbyggda funktionen i SQL Server. Till exempel kan vi anropa ovanstående udfNet_Sales-funktion enligt nedan:
SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales;
Om du kör den här funktionen returneras nettoomsättningen:
SQL Server tillåter oss också för att ändra den skalära funktionen genom att använda ALTER nyckelord. Här är syntaxen för att göra detta:
ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
Vi kan använda satsen nedan för att ta bort den skalära funktionen från SQL Server-databasen:
DROP FUNCTION [schema_name.]function_name;
Tabell-värderade funktioner
Tabellvärdade funktioner i SQL Server är användardefinierad funktion som returnerar data av en tabelltyp. Eftersom denna funktion är returtyp är en tabell , vi kan använda det på samma sätt som vi använder en tabell.
Vi kan kategorisera den tabellvärdade funktionen i två typer:
1. Inline tabell-värden funktioner
Denna UDF-funktion returnerar en tabellvariabel baserat på åtgärden som utförs av funktionen. En enda SELECT-sats ska användas för att bestämma värdet på tabellvariabeln.
Exempel
Exemplet nedan kommer att skapa en funktion för tabellvärden och hämta data från personaltabellen:
--It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee)
I denna syntax är RETURBORD anger att funktionen returnerar en tabell. Eftersom det inte finns någon BÖRJA...SLUT uttalande, frågar den helt enkelt efter data från personaltabellen. Om den inte har några parametrar kommer den att anropas direkt.
Vi kan anropa tabellvärdade funktioner genom att använda FRÅN klausul i VÄLJ fråga. Till exempel , kan vi kalla ovanstående udf_GetEmployee fungerar enligt nedan:
ladda ner youtube video vlc
SELECT * FROM udf_GetEmployee();
Om du kör den här funktionen returneras följande resultat:
SQL Server tillåter oss också att modifiera tabellvärdade funktioner med nyckelordet ALTER istället för nyckelordet CREATE. Resten av manuset är detsamma.
Tabellvärdade funktioner med flera påståenden (MSTVF)
if else uttalande java
Denna UDF-funktion returnerar en tabellvariabel baserat på den åtgärd som utförs av funktionen. Den kan innehålla enstaka eller flera satser för att producera resultatet, och det är också en funktion som returnerar resultatet av flera satser i tabellform. Det är användbart eftersom vi kan köra flera satser i den här funktionen och få aggregerade resultat i den returnerade tabellen. Vi kan definiera denna funktion genom att använda en tabellvariabel som returvärde. Inuti funktionen kör vi flera frågor och infogar data i denna tabellvariabel.
Följande exempel skapar ett funktionsnamn 'MULTIVÄRDERAD' som returnerar ' @Anställd' tabell. Den innehåller tre fält som heter id, emp_name och lön från 'Anställd' tabell med INSERT-satsen och använder sedan UPDATE-satsen för att uppdatera anställds namn.
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 anropa tabellvärderade funktioner med flera påståenden genom att använda FROM-satsen i SELECT-frågan. Till exempel , kan vi anropa ovanstående funktion enligt nedan:
SELECT * FROM MULTIVALUED();
Om du kör den här funktionen returneras följande resultat:
När ska tabellvärderade funktioner användas?
Tabellvärdade funktioner används vanligtvis som parametriserade vyer. Tabellvärdade funktioner är mer flexibla än lagrade procedurer eftersom de kan användas var som helst där tabeller används.
Slutsats
Den här artikeln kommer att förklara en fullständig översikt över funktioner som används i SQL Server. Här har vi lärt oss huvudsakligen två typer av funktioner som används i SQL Server: system- och användardefinierade funktioner.