logo

Funkcije strežnika SQL

Funkcije v strežniku SQL Server so objekti baze podatkov, ki vsebujejo a niz stavkov SQL za izvedbo določene naloge . Funkcija sprejme vhodne parametre, izvede dejanja in nato vrne rezultat. Upoštevati je treba, da funkcije vedno vrnejo eno vrednost ali tabelo. Glavni namen funkcij je preprosto posnemanje običajne naloge. Funkcije lahko zgradimo enkrat in jih lahko uporabimo na več lokacijah glede na naše potrebe. SQL Server ne dovoljuje uporabe funkcij za vstavljanje, brisanje ali posodabljanje zapisov v tabelah baze podatkov.

Sledijo pravila za ustvarjanje funkcij SQL Server:

  • Funkcija mora imeti ime, ime pa se ne sme začeti s posebnim znakom, kot so @, $, # ali drugi podobni znaki.
  • Stavki SELECT so edini, ki delujejo s funkcijami.
  • Funkcijo lahko uporabimo kjerkoli, kot so AVG, COUNT, SUM, MIN, DATE in druge funkcije s poizvedbo SELECT v SQL.
  • Kadarkoli je funkcija poklicana, se prevede.
  • Funkcije morajo vrniti vrednost ali rezultat.
  • Funkcije uporabljajo samo vhodne parametre.
  • V funkcijah ne moremo uporabiti stavkov TRY in CATCH.

Vrste funkcij

SQL Server kategorizira funkcije v dve vrsti:

  • Sistemske funkcije
  • Uporabniško določene funkcije

Naj podrobneje opišemo obe vrsti.

Sistemske funkcije

Funkcije, ki jih definira sistem, so znane kot sistemske funkcije. Z drugimi besedami, vse vgrajene funkcije ki jih podpira strežnik, se imenujejo sistemske funkcije. Vgrajene funkcije nam prihranijo čas pri izvajanju konkretne naloge. Te vrste funkcij običajno delujejo s stavkom SQL SELECT za izračun vrednosti in obdelavo podatkov.

Tukaj je seznam nekaterih sistemskih funkcij, ki se uporabljajo v strežniku SQL:

  • Funkcije nizov (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
  • Funkcije datuma in časa (datum-čas, datum-čas2, smalldatetime)
  • Združevalne funkcije (COUNT, MAX, MIN, SUM, AVG)
  • Matematične funkcije (ABS, POWER, PI, EXP, LOG)
  • Funkcije razvrščanja (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

Naslednja slika prikazuje vse vgrajene funkcije baze podatkov, ki se uporabljajo v SQL Server:

Funkcije strežnika SQL

Uporabniško določene funkcije

Funkcije, ki so ustvaril uporabnik v sistemski bazi podatkov ali uporabniško definirani bazi podatkov so znane kot uporabniško definirane funkcije. Funkcije UDF sprejemajo parametre, izvajajo dejanja in vrnejo rezultat. Te funkcije nam pomagajo poenostaviti naš razvoj tako, da združimo kompleksno poslovno logiko in jo damo na voljo za ponovno uporabo kjer koli glede na potrebe. Uporabniško definirane funkcije omogočajo veliko lažje pisanje kode, potrebne za poizvedovanje podatkov. Izboljšajo tudi berljivost in funkcionalnost poizvedb ter omogočajo drugim uporabnikom ponovitev istih postopkov.

SQL Server kategorizira uporabniško definirane funkcije predvsem v dve vrsti:

  1. Skalarne funkcije
  2. Funkcije s tabelnimi vrednostmi

Tukaj so opisi teh funkcij UDF.

Skalarne funkcije

Skalarna funkcija v SQL Server vedno sprejme parametre, bodisi posamezne ali večkratne, in vrne eno samo vrednost . Skalarne funkcije so uporabne pri poenostavitvi naše kode. Recimo, da imamo morda zapleten izračun, ki se pojavi v številnih poizvedbah. V takem primeru lahko zgradimo skalarno funkcijo, ki enkapsulira formulo in jo uporabi v vsaki poizvedbi namesto v vsaki poizvedbi.

Naslednja sintaksa ponazarja ustvarjanje skalarne funkcije v strežniku SQL Server:

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

Zgornji sintaksni parametri so opisani spodaj:

Najprej bomo določili ime funkcije za USTVARITE FUNKCIJO ključne besede. Ime sheme ni obvezno. Če ne bomo določili imena sheme, bo SQL Server uporabil privzeto shemo dbo . Nato bomo določili seznam parametri v oklepaju. Tretjič, napisali bomo izjave za funkcijo in nato v VRAČILA stavek, določite podatkovni tip vrnjene vrednosti. Nazadnje smo dodali stavek RETURN za vrnitev vrednosti znotraj telesa funkcije.

Primer

Ta primer bo ustvaril funkcijo za izračunajte neto prodajo glede na količino, ceno in vrednost popusta:

 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; 

Zdaj lahko to funkcijo uporabimo za izračun neto prodaje katerega koli prodajnega naročila v definirani tabeli.

Naslednji slikovni prikaz, kjer lahko najdemo skalarne funkcije:

Funkcije strežnika SQL

Skalarne funkcije lahko imenujemo enako kot vgrajeno funkcijo v SQL Server. Zgornjo funkcijo udfNet_Sales lahko na primer pokličemo kot spodaj:

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

Izvedba te funkcije bo vrnila neto prodajo:

Funkcije strežnika SQL

SQL Server nam tudi omogoča da spremenite skalarno funkcijo z uporabo ALTER ključna beseda. Tukaj je sintaksa za to:

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

Za odstranitev skalarne funkcije iz baze podatkov SQL Server lahko uporabimo spodnji stavek:

 DROP FUNCTION [schema_name.]function_name; 

Funkcije s tabelnimi vrednostmi

Funkcije s tabelnimi vrednostmi v strežniku SQL Server so uporabniško definirana funkcija ki vrne podatke vrste tabele. Ker je ta funkcija povratni tip je tabela , ga lahko uporabljamo na enak način kot tabelo.

Funkcijo s tabelo lahko razvrstimo v dve vrsti:

1. Vgrajene funkcije tabele vrednosti

Ta funkcija UDF vrne spremenljivko tabele na podlagi dejanja, ki ga izvede funkcija. Za določitev vrednosti spremenljivke tabele je treba uporabiti en sam stavek SELECT.

greatandhra

Primer

Spodnji primer bo ustvaril funkcijo tabele vrednosti in pridobil podatke tabele zaposlenih:

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

V tej sintaksi je TABELA VRAČIL določa, da bo funkcija vrnila tabelo. Ker ni ZAČETEK...KONEC stavek, preprosto poizveduje po podatkih iz tabele zaposlenih. Tudi, če nima parametrov, bo poklican neposredno.

Funkcije s tabelnimi vrednostmi lahko pokličemo z uporabo OD klavzula IZBERI poizvedbo. Na primer , lahko imenujemo zgoraj udf_GetEmployee deluje kot spodaj:

 SELECT * FROM udf_GetEmployee(); 

Izvajanje te funkcije bo vrnilo spodnji rezultat:

Funkcije strežnika SQL

SQL Server nam prav tako omogoča, da spremenimo funkcije z vrednostjo tabele z uporabo ključne besede ALTER namesto ključne besede CREATE. Preostali del scenarija je enak.

Funkcije z vrednostmi tabele z več stavki (MSTVF)

Ta funkcija UDF vrne spremenljivko tabele na podlagi dejanja, ki ga izvaja funkcija. Vsebuje lahko enega ali več stavkov za ustvarjanje rezultata in je tudi funkcija, ki vrne rezultat več stavkov v obliki tabele. Uporabno je, ker lahko v tej funkciji izvedemo več stavkov in dobimo združene rezultate v vrnjeno tabelo. To funkcijo lahko definiramo z uporabo spremenljivke tabele kot povratne vrednosti. Znotraj funkcije izvedemo več poizvedb in vnesemo podatke v to spremenljivko tabele.

Naslednji primer ustvari ime funkcije 'MULTIVALUED' ki vrne ' @Zaposleni' tabela. Vsebuje tri polja z imenom id, emp_name in salary iz 'Zaposleni' tabelo s stavkom INSERT in nato s stavkom UPDATE posodobite ime zaposlenega.

 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 

Funkcije z vrednostmi tabele z več stavki lahko pokličemo z uporabo klavzule FROM poizvedbe SELECT. Na primer , lahko zgornjo funkcijo pokličemo kot spodaj:

 SELECT * FROM MULTIVALUED(); 

Izvajanje te funkcije bo vrnilo spodnji rezultat:

Funkcije strežnika SQL

Kdaj je treba uporabiti funkcije s tabelnimi vrednostmi?

Funkcije z vrednostjo tabele se običajno uporabljajo kot parametrirani pogledi. Funkcije s tabelnimi vrednostmi so bolj prilagodljive kot shranjene procedure, ker jih je mogoče uporabiti kjer koli se uporabljajo tabele.

Zaključek

Ta članek bo razložil celoten pregled funkcij, ki se uporabljajo v strežniku SQL Server. Tu smo spoznali predvsem dve vrsti funkcij, ki se uporabljata v SQL Serverju: sistemske in uporabniško definirane funkcije.