Functies in SQL Server zijn de databaseobjecten die een set SQL-instructies om een specifieke taak uit te voeren . Een functie accepteert invoerparameters, voert acties uit en retourneert vervolgens het resultaat. We moeten er rekening mee houden dat functies altijd een enkele waarde of een tabel retourneren. Het belangrijkste doel van functies is om de gemeenschappelijke taak eenvoudig te repliceren. We kunnen functies één keer bouwen en deze op meerdere locaties gebruiken op basis van onze behoeften. SQL Server staat het gebruik van de functies voor het invoegen, verwijderen of bijwerken van records in de databasetabellen niet toe.
Hieronder volgen de regels voor het maken van SQL Server-functies:
- Een functie moet een naam hebben en de naam mag niet beginnen met een speciaal teken zoals @, $, # of andere soortgelijke tekens.
- SELECT-instructies zijn de enige die met functies werken.
- We kunnen overal een functie gebruiken, zoals AVG, COUNT, SUM, MIN, DATE en andere functies met de SELECT-query in SQL.
- Elke keer dat een functie wordt aangeroepen, compileert deze.
- Functies moeten een waarde of resultaat retourneren.
- Functies gebruiken alleen invoerparameters.
- We kunnen geen TRY- en CATCH-instructies in functies gebruiken.
Soorten functies
SQL Server categoriseert de functies in twee typen:
- Systeemfuncties
- Door de gebruiker gedefinieerde functies
Laten we beide typen in detail beschrijven.
Systeemfuncties
Functies die door het systeem worden gedefinieerd, staan bekend als systeemfuncties. Met andere woorden: alle ingebouwde functies die door de server worden ondersteund, worden systeemfuncties genoemd. De ingebouwde functies besparen ons tijd bij het uitvoeren van de specifieke taak. Dit soort functies werken meestal met de SQL SELECT-instructie om waarden te berekenen en gegevens te manipuleren.
Hier is de lijst met enkele systeemfuncties die in de SQL Server worden gebruikt:
- Tekenreeksfuncties (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
- Datum- en tijdfuncties (datetime, datetime2, smalldatetime)
- Geaggregeerde functies (COUNT, MAX, MIN, SUM, AVG)
- Wiskundige functies (ABS, POWER, PI, EXP, LOG)
- Rankingfuncties (RANK, DENSE_RANK, ROW_NUMBER, NTILE)
De volgende afbeelding toont alle ingebouwde databasefuncties die in de SQL Server worden gebruikt:
Door de gebruiker gedefinieerde functies
Functies die dat zijn aangemaakt door de gebruiker in de systeemdatabase of een door de gebruiker gedefinieerde database staan bekend als door de gebruiker gedefinieerde functies. De UDF-functies accepteren parameters, voeren acties uit en retourneren het resultaat. Deze functies helpen ons onze ontwikkeling te vereenvoudigen door complexe bedrijfslogica in te kapselen en deze overal beschikbaar te maken voor hergebruik op basis van de behoeften. De door de gebruiker gedefinieerde functies maken het schrijven van de code die nodig is om gegevens op te vragen een stuk eenvoudiger. Ze verbeteren ook de leesbaarheid en functionaliteit van zoekopdrachten, en stellen andere gebruikers in staat dezelfde procedures te repliceren.
pete davidson leeftijd
SQL Server categoriseert de door de gebruiker gedefinieerde functies hoofdzakelijk in twee typen:
tekenreeks toevoegen in Java
- Scalaire functies
- Functies met tabelwaarde
Hier volgen de beschrijvingen van deze UDF-functies.
Scalaire functies
Scalaire functie in SQL Server altijd accepteert parameters, enkelvoudig of meervoudig, en retourneert een enkele waarde . De scalaire functies zijn nuttig bij de vereenvoudiging van onze code. Stel dat we een complexe berekening hebben die in een aantal zoekopdrachten voorkomt. In een dergelijk geval kunnen we een scalaire functie bouwen die de formule inkapselt en deze in elke query gebruikt in plaats van in elke query.
Hieronder ziet u de syntaxis die het maken van een scalaire functie in SQL Server illustreert:
CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
De bovenstaande syntaxisparameters worden hieronder beschreven:
We zullen eerst de functienaam definiëren na de CREËER FUNCTIE trefwoorden. De naam van het schema is optioneel. Als we de schemanaam niet definiëren, gebruikt SQL Server het standaardschema dbo . Vervolgens definiëren we de lijst met parameters tussen haakjes ingesloten. Ten derde zullen we de instructies voor de functie schrijven en vervolgens in de GEEFT TERUG statement, definieer het gegevenstype van de geretourneerde waarde. Ten slotte hebben we de RETURN-instructie toegevoegd om een waarde binnen de hoofdtekst van de functie te retourneren.
Voorbeeld
In dit voorbeeld wordt een functie gemaakt voor bereken de netto-omzet gebaseerd op de hoeveelheid, prijs en kortingswaarde:
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 kunnen we deze functie gebruiken om de netto-omzet van elke verkooporder in de gedefinieerde tabel te berekenen.
De volgende afbeelding toont waar we de scalaire functies kunnen vinden:
applet
We kunnen de scalaire functies hetzelfde noemen als de ingebouwde functie in SQL Server. We kunnen bijvoorbeeld de bovenstaande udfNet_Sales-functie aanroepen zoals hieronder:
SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales;
Als u deze functie uitvoert, wordt de netto-omzet geretourneerd:
SQL Server staat ons dat ook toe om de scalaire functie te wijzigen met behulp van de ALTER trefwoord. Hier is de syntaxis om dit te doen:
ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
We kunnen de onderstaande instructie gebruiken om de scalaire functie uit de SQL Server-database te verwijderen:
DROP FUNCTION [schema_name.]function_name;
Functies met tabelwaarde
Functies met tabelwaarden in SQL Server zijn de door de gebruiker gedefinieerde functie die gegevens van een tabeltype retourneert. Sinds deze functie retourtype is een tabel , kunnen we het op dezelfde manier gebruiken als een tabel.
We kunnen de tabelwaardefunctie in twee typen categoriseren:
1. Inline tabelwaardenfuncties
Deze UDF-functie retourneert een tabelvariabele op basis van de actie die door de functie wordt uitgevoerd. Er moet één enkele SELECT-instructie worden gebruikt om de waarde van de tabelvariabele te bepalen.
b+ boom
Voorbeeld
In het onderstaande voorbeeld wordt een tabelwaardenfunctie gemaakt en worden de gegevens van de werknemerstabel opgehaald:
--It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee)
In deze syntaxis wordt de RETOURTABEL geeft aan dat de functie een tabel retourneert. Aangezien er geen BEGIN...EIND statement, het vraagt eenvoudigweg gegevens op uit de werknemerstabel. Als het geen parameters heeft, wordt het ook rechtstreeks aangeroepen.
We kunnen de tabelwaardefuncties aanroepen met behulp van de VAN clausule van de SELECTEER vraag. Bijvoorbeeld , kunnen we het bovenstaande noemen udf_GetEmployee functie zoals hieronder:
SELECT * FROM udf_GetEmployee();
Als u deze functie uitvoert, wordt het onderstaande resultaat geretourneerd:
Met SQL Server kunnen we ook de tabelwaardefuncties wijzigen met behulp van het ALTER-sleutelwoord in plaats van het CREATE-sleutelwoord. De rest van het script is hetzelfde.
Tabelwaardefuncties met meerdere instructies (MSTVF)
mysql niet gelijk
Deze UDF-functie retourneert een tabelvariabele gebaseerd op de actie die door de functie wordt uitgevoerd. Het kan enkele of meerdere uitspraken bevatten om het resultaat te produceren, en het is ook een functie die het resultaat van meerdere uitspraken in tabelvorm retourneert. Het is handig omdat we in deze functie meerdere instructies kunnen uitvoeren en geaggregeerde resultaten in de geretourneerde tabel kunnen krijgen. We kunnen deze functie definiëren door een tabelvariabele als retourwaarde te gebruiken. Binnen de functie voeren we meerdere zoekopdrachten uit en voegen we gegevens in deze tabelvariabele in.
In het volgende voorbeeld wordt een functienaam gemaakt 'VEELWAARDEN' dat retourneert de ' @Medewerker' tafel. Het bevat drie velden met de naam id, werknaam en salaris van de 'Medewerker' tabel met behulp van de INSERT-instructie en gebruikt vervolgens de UPDATE-instructie om de naam van de werknemer bij te werken.
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
We kunnen de tabelwaardefuncties met meerdere instructies aanroepen met behulp van de FROM-clausule van de SELECT-query. Bijvoorbeeld , kunnen we de bovenstaande functie aanroepen zoals hieronder:
SELECT * FROM MULTIVALUED();
Als u deze functie uitvoert, wordt het onderstaande resultaat geretourneerd:
Wanneer moeten tabelwaardefuncties worden gebruikt?
Functies met tabelwaarden worden vaak gebruikt als geparametriseerde weergaven. Functies met tabelwaarden zijn flexibeler dan opgeslagen procedures, omdat ze overal kunnen worden gebruikt waar tabellen worden gebruikt.
Conclusie
In dit artikel wordt een compleet overzicht gegeven van de functies die in de SQL Server worden gebruikt. Hier hebben we voornamelijk twee soorten functies geleerd die in de SQL Server worden gebruikt: systeemfuncties en door de gebruiker gedefinieerde functies.