logo

SQL Server-funksjoner

Funksjoner i SQL Server er databaseobjektene som inneholder en sett med SQL-setninger for å utføre en bestemt oppgave . En funksjon aksepterer inndataparametere, utfører handlinger og returnerer deretter resultatet. Vi bør merke oss at funksjoner alltid returnerer enten en enkelt verdi eller en tabell. Hovedformålet med funksjoner er å enkelt replikere den vanlige oppgaven. Vi kan bygge funksjoner én gang og kan bruke dem på flere steder basert på våre behov. SQL Server tillater ikke bruk av funksjonene for å sette inn, slette eller oppdatere poster i databasetabellene.

Følgende er reglene for å lage SQL Server-funksjoner:

char til streng java
  • En funksjon må ha et navn, og navnet kan ikke begynne med et spesialtegn som @, $, # eller andre lignende tegn.
  • SELECT-setninger er de eneste som opererer med funksjoner.
  • Vi kan bruke en funksjon hvor som helst som AVG, COUNT, SUM, MIN, DATE og andre funksjoner med SELECT-spørringen i SQL.
  • Hver gang en funksjon kalles, kompilerer den.
  • Funksjoner må returnere en verdi eller et resultat.
  • Funksjoner bruker kun inngangsparametere.
  • Vi kan ikke bruke TRY- og CATCH-setninger i funksjoner.

Typer funksjoner

SQL Server kategoriserer funksjonene i to typer:

  • Systemfunksjoner
  • Brukerdefinerte funksjoner

La oss beskrive begge typer i detalj.

Systemfunksjoner

Funksjoner som er definert av systemet er kjent som systemfunksjoner. Med andre ord, alle innebygde funksjoner som støttes av serveren, kalles systemfunksjoner. De innebygde funksjonene sparer oss for tid mens vi utfører den spesifikke oppgaven. Disse typer funksjoner fungerer vanligvis med SQL SELECT-setningen for å beregne verdier og manipulere data.

Her er listen over noen systemfunksjoner som brukes i SQL Server:

  • Strengefunksjoner (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
  • Dato- og klokkeslettfunksjoner (datetime, datetime2, smalldatetime)
  • Aggregerte funksjoner (COUNT, MAX, MIN, SUM, AVG)
  • Matematiske funksjoner (ABS, POWER, PI, EXP, LOG)
  • Rangeringsfunksjoner (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

Følgende bilde viser alle de innebygde databasefunksjonene som brukes i SQL Server:

SQL Server-funksjoner

Brukerdefinerte funksjoner

Funksjoner som er opprettet av brukeren i systemdatabasen eller en brukerdefinert database er kjent som brukerdefinerte funksjoner. UDF-funksjonene godtar parametere, utfører handlinger og returnerer resultatet. Disse funksjonene hjelper oss med å forenkle utviklingen vår ved å innkapsle kompleks forretningslogikk og gjøre den tilgjengelig for gjenbruk hvor som helst basert på behovene. De brukerdefinerte funksjonene gjør koden som trengs for å spørre data mye enklere å skrive. De forbedrer også spørringslesbarheten og funksjonaliteten, samt lar andre brukere replikere de samme prosedyrene.

SQL Server kategoriserer de brukerdefinerte funksjonene hovedsakelig i to typer:

  1. Skalarfunksjoner
  2. Tabell-verdier funksjoner

Her er beskrivelsene av disse UDF-funksjonene.

Skalarfunksjoner

Skalarfunksjon i SQL Server alltid aksepterer parametere, enten enkelt eller flere og returnerer en enkelt verdi . Skalarfunksjonene er nyttige i forenklingen av koden vår. Anta at vi kan ha en kompleks beregning som vises i en rekke spørringer. I et slikt tilfelle kan vi bygge en skalarfunksjon som innkapsler formelen og bruker den i hver spørring i stedet for i hver spørring.

Følgende er syntaksen som illustrerer opprettelsen av skalarfunksjon i SQL Server:

 CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Syntaksparametrene ovenfor er beskrevet nedenfor:

Vi vil først definere funksjonsnavnet etter LAG FUNKSJON søkeord. Navnet på skjemaet er valgfritt. Hvis vi ikke vil definere skjemanavnet, bruker SQL Server standardskjema dbo . Deretter vil vi definere listen over parametere satt i parentes. For det tredje vil vi skrive utsagnene for funksjonen og deretter, i RETURER setning, definer datatypen for returverdien. Til slutt har vi lagt til RETURN-setningen for å returnere en verdi inne i funksjonens kropp.

Eksempel

Dette eksemplet vil lage en funksjon til beregne nettoomsetningen basert på kvantitet, pris og rabattverdi:

 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; 

Nå kan vi bruke denne funksjonen til å beregne nettosalget av en hvilken som helst salgsordre i den definerte tabellen.

Følgende bildevisning der vi kan finne skalarfunksjonene:

SQL Server-funksjoner

Vi kan kalle skalarfunksjonene det samme som den innebygde funksjonen i SQL Server. For eksempel kan vi kalle ovennevnte udfNet_Sales-funksjon som nedenfor:

 SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales; 

Utførelse av denne funksjonen vil returnere nettoomsetningen:

SQL Server-funksjoner

SQL Server tillater oss også for å endre skalarfunksjonen ved å bruke ALTER søkeord. Her er syntaksen for å gjøre dette:

 ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Vi kan bruke setningen nedenfor for å fjerne skalarfunksjonen fra SQL Server-databasen:

 DROP FUNCTION [schema_name.]function_name; 

Tabell-verdier funksjoner

Tabell-verdifunksjoner i SQL Server er brukerdefinert funksjon som returnerer data av en tabelltype. Siden denne funksjonen er returtype er en tabell , kan vi bruke det på samme måte som vi bruker en tabell.

legge til streng i java

Vi kan kategorisere den tabellverdide funksjonen i to typer:

1. Innebygde tabell-verdifunksjoner

Denne UDF-funksjonen returnerer en tabellvariabel basert på handlingen utført av funksjonen. En enkelt SELECT-setning skal brukes til å bestemme verdien av tabellvariabelen.

Eksempel

kart java iterator

Eksemplet nedenfor vil opprette en tabellverdifunksjon og hente dataene til ansatttabellen:

 --It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee) 

I denne syntaksen er RETURBORD spesifiserer at funksjonen vil returnere en tabell. Siden det er nei BEGYNNE...SLUTTE uttalelse, spør den ganske enkelt om data fra ansatttabellen. Dessuten, hvis den ikke har noen parametere, blir den kalt opp direkte.

Vi kan kalle funksjonene med tabellverdi ved å bruke FRA klausul i PLUKKE UT spørsmål. For eksempel , kan vi kalle ovenstående udf_GetEmployee fungerer som nedenfor:

 SELECT * FROM udf_GetEmployee(); 

Utførelse av denne funksjonen vil returnere følgende resultat:

SQL Server-funksjoner

SQL Server lar oss også endre tabellverdifunksjonene ved å bruke ALTER-nøkkelordet i stedet for CREATE-nøkkelordet. Resten av manuset er det samme.

Multi-statement table-valued functions (MSTVF)

Denne UDF-funksjonen returnerer en tabellvariabel basert på handlingen utført av funksjonen. Den kan inneholde enkelt eller flere utsagn for å produsere resultatet, og det er også en funksjon som returnerer resultatet av flere utsagn i tabellform. Det er nyttig fordi vi kan utføre flere setninger i denne funksjonen og få aggregerte resultater inn i den returnerte tabellen. Vi kan definere denne funksjonen ved å bruke en tabellvariabel som returverdi. Inne i funksjonen utfører vi flere spørringer og setter inn data i denne tabellvariabelen.

Følgende eksempel oppretter et funksjonsnavn 'MULTIVERDIG' som returnerer ' @Ansatt' bord. Den inneholder tre felt kalt id, emp_name og lønn fra 'Ansatt' tabell ved hjelp av INSERT-setning, og bruker deretter UPDATE-setning for å oppdatere ansattnavnet.

 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 kalle funksjonene med flere setninger tabellverdier ved å bruke FROM-leddet i SELECT-spørringen. For eksempel , kan vi kalle funksjonen ovenfor som nedenfor:

 SELECT * FROM MULTIVALUED(); 

Utførelse av denne funksjonen vil returnere resultatet nedenfor:

SQL Server-funksjoner

Når skal funksjoner med tabellverdi brukes?

Tabell-verdifunksjoner brukes vanligvis som parameteriserte visninger. Tabell-verdifunksjoner er mer fleksible enn lagrede prosedyrer fordi de kan brukes overalt hvor tabeller brukes.

Konklusjon

Denne artikkelen vil forklare en fullstendig oversikt over funksjoner som brukes i SQL Server. Her har vi lært hovedsakelig to typer funksjoner som brukes i SQL Serveren: system- og brukerdefinerte funksjoner.