logo

SQL servera funkcijas

SQL Server funkcijas ir datu bāzes objekti, kas satur a SQL priekšrakstu kopa, lai veiktu konkrētu uzdevumu . Funkcija pieņem ievades parametrus, veic darbības un pēc tam atgriež rezultātu. Jāņem vērā, ka funkcijas vienmēr atgriež vienu vērtību vai tabulu. Funkciju galvenais mērķis ir viegli atkārtot kopējo uzdevumu. Mēs varam izveidot funkcijas vienu reizi un izmantot tās vairākās vietās, pamatojoties uz mūsu vajadzībām. SQL Server neļauj izmantot ierakstu ievietošanas, dzēšanas vai atjaunināšanas funkcijas datu bāzes tabulās.

Tālāk ir norādīti SQL Server funkciju izveides noteikumi.

  • Funkcijai ir jābūt nosaukumam, un nosaukums nedrīkst sākties ar īpašu rakstzīmi, piemēram, @, $, # vai citām līdzīgām rakstzīmēm.
  • SELECT priekšraksti ir vienīgie, kas darbojas ar funkcijām.
  • Mēs varam izmantot funkciju jebkur, piemēram, AVG, COUNT, SUM, MIN, DATE un citas funkcijas ar SELECT vaicājumu SQL.
  • Ikreiz, kad funkcija tiek izsaukta, tā tiek kompilēta.
  • Funkcijām ir jāatgriež vērtība vai rezultāts.
  • Funkcijas izmanto tikai ievades parametrus.
  • Funkcijās nevar izmantot TRY un CATCH priekšrakstus.

Funkciju veidi

SQL Server funkcijas iedala divos veidos:

  • Sistēmas funkcijas
  • Lietotāja definētas funkcijas

Sīkāk aprakstīsim abus veidus.

Sistēmas funkcijas

Sistēmas definētās funkcijas sauc par sistēmas funkcijām. Citiem vārdiem sakot, visas iebūvētās funkcijas ko atbalsta serveris, tiek sauktas par sistēmas funkcijām. Iebūvētās funkcijas ietaupa laiku, veicot konkrēto uzdevumu. Šāda veida funkcijas parasti darbojas ar SQL SELECT priekšrakstu, lai aprēķinātu vērtības un apstrādātu datus.

Šeit ir saraksts ar dažām SQL serverī izmantotajām sistēmas funkcijām:

  • Virknes funkcijas (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
  • Datuma un laika funkcijas (datetime, datetime2, smalldatetime)
  • Apkopotās funkcijas (COUNT, MAX, MIN, SUM, AVG)
  • Matemātiskās funkcijas (ABS, POWER, PI, EXP, LOG)
  • Ranžēšanas funkcijas (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

Nākamajā attēlā ir parādītas visas iebūvētās datu bāzes funkcijas, kas tiek izmantotas SQL serverī:

SQL servera funkcijas

Lietotāja definētas funkcijas

Funkcijas, kas ir ko izveidojis lietotājs sistēmas datu bāzē vai lietotāja definētā datu bāzē ir zināmas kā lietotāja definētas funkcijas. UDF funkcijas pieņem parametrus, veic darbības un atgriež rezultātu. Šīs funkcijas palīdz mums vienkāršot mūsu attīstību, iekapsulējot sarežģītu biznesa loģiku un padarot to pieejamu atkārtotai izmantošanai jebkurā vietā, pamatojoties uz vajadzībām. Lietotāja definētās funkcijas padara datu vaicājuma koda ierakstīšanu daudz vienkāršāku. Tie arī uzlabo vaicājumu lasāmību un funkcionalitāti, kā arī ļauj citiem lietotājiem atkārtot tās pašas procedūras.

SQL Server klasificē lietotāja definētās funkcijas galvenokārt divos veidos:

  1. Skalārās funkcijas
  2. Tabulas vērtības funkcijas

Šeit ir šo UDF funkciju apraksti.

Skalārās funkcijas

Skalārā funkcija SQL Server vienmēr pieņem vienu vai vairākus parametrus un atgriež vienu vērtību . Skalārās funkcijas ir noderīgas mūsu koda vienkāršošanā. Pieņemsim, ka mums varētu būt sarežģīts aprēķins, kas parādās vairākos vaicājumos. Šādā gadījumā mēs varam izveidot skalāru funkciju, kas iekapsulē formulu un izmanto to katrā vaicājumā, nevis katrā vaicājumā.

Tālāk ir sniegta sintakse, kas ilustrē skalārās funkcijas izveidi SQL Server:

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

Iepriekš minētie sintakses parametri ir aprakstīti tālāk:

Vispirms mēs definēsim funkcijas nosaukumu pēc IZVEIDOT FUNKCIJU atslēgvārdi. Shēmas nosaukums nav obligāts. Ja mēs nedefinēsim shēmas nosaukumu, SQL Server izmanto noklusējuma shēmu dbo . Tālāk mēs definēsim sarakstu parametrus iekavās. Treškārt, mēs uzrakstīsim funkcijas paziņojumus un pēc tam ATGRIEZ paziņojumu, definējiet atgriežamās vērtības datu tipu. Visbeidzot, mēs esam pievienojuši RETURN paziņojumu, lai atgrieztu vērtību funkcijas pamattekstā.

Piemērs

Šis piemērs izveidos funkciju, lai aprēķināt neto pārdošanas apjomu pamatojoties uz daudzumu, cenu un atlaides vērtību:

 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; 

Tagad mēs varam izmantot šo funkciju, lai aprēķinātu jebkura pārdošanas pasūtījuma neto pārdošanas apjomu definētajā tabulā.

Tiek parādīts šāds attēls, kurā mēs varam atrast skalārās funkcijas:

SQL servera funkcijas

Mēs varam saukt skalārās funkcijas tāpat kā SQL Server iebūvēto funkciju. Piemēram, mēs varam izsaukt iepriekš minēto funkciju udfNet_Sales, kā norādīts tālāk:

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

Šīs funkcijas izpilde atgriezīs neto pārdošanas apjomu:

SQL servera funkcijas

SQL Server arī ļauj mums lai modificētu skalāro funkciju, izmantojot ALTER atslēgvārds. Šeit ir sintakse, lai to izdarītu:

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

Mēs varam izmantot tālāk norādīto paziņojumu, lai noņemtu skalāro funkciju no SQL Server datu bāzes:

 DROP FUNCTION [schema_name.]function_name; 

Tabulas vērtības funkcijas

Tabulu vērtības funkcijas SQL Server ir lietotāja definēta funkcija kas atgriež tabulas tipa datus. Tā kā šī funkcija ir atgriešanas veids ir tabula , mēs to varam izmantot tāpat kā tabulu.

Tabulas vērtības funkciju varam iedalīt divos veidos:

1. Iekļautās tabulas vērtību funkcijas

Šī UDF funkcija atgriež tabulas mainīgo, pamatojoties uz funkcijas veikto darbību. Lai noteiktu tabulas mainīgā vērtību, jāizmanto viens SELECT priekšraksts.

Piemērs

Tālāk sniegtajā piemērā tiks izveidota tabulas vērtību funkcija un izgūti darbinieka tabulas dati:

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

Šajā sintaksē ATGRIEŠANAS GALDS norāda, ka funkcija atgriezīs tabulu. Tā kā nav SĀKT... BEIGAS paziņojumu, tas vienkārši vaicā datus no darbinieku tabulas. Tāpat, ja tam nav nekādu parametru, tas tiks izsaukts tieši.

Mēs varam izsaukt tabulas vērtības funkcijas, izmantojot NO klauzula ATLASĪT vaicājums. Piemēram , mēs varam saukt iepriekš minēto udf_GetEmployee darbojas kā norādīts zemāk:

 SELECT * FROM udf_GetEmployee(); 

Šīs funkcijas izpilde atgriezīs šādu rezultātu:

java masīvi
SQL servera funkcijas

SQL Server ļauj mums arī mainīt tabulas vērtības, izmantojot atslēgvārdu ALTER, nevis atslēgvārdu CREATE. Pārējais skripts ir tāds pats.

Vairāku priekšrakstu tabulas vērtības funkcijas (MSTVF)

Šī UDF funkcija atgriež tabulas mainīgo pamatojoties uz funkcijas veikto darbību. Tajā var būt viens vai vairāki priekšraksti, lai iegūtu rezultātu, un tā ir arī funkcija, kas atgriež vairāku priekšrakstu rezultātu tabulas veidā. Tas ir noderīgi, jo šajā funkcijā mēs varam izpildīt vairākus paziņojumus un iegūt apkopotos rezultātus atgrieztajā tabulā. Mēs varam definēt šo funkciju, izmantojot tabulas mainīgo kā atgriešanas vērtību. Funkcijā mēs izpildām vairākus vaicājumus un ievietojam datus šajā tabulas mainīgajā.

Nākamajā piemērā tiek izveidots funkcijas nosaukums 'MULTIVĒRTĪBA' kas atgriež ' @Darbinieks' tabula. Tajā ir trīs lauki ar nosaukumu id, emp_name un alga no 'Darbinieks' tabulu, izmantojot INSERT priekšrakstu, un pēc tam izmanto paziņojumu UPDATE, lai atjauninātu darbinieka vārdu.

 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 

Mēs varam izsaukt vairāku priekšrakstu tabulas vērtības, izmantojot vaicājuma SELECT klauzulu FROM. Piemēram , mēs varam izsaukt iepriekš minēto funkciju, kā norādīts tālāk:

 SELECT * FROM MULTIVALUED(); 

Šīs funkcijas izpilde atgriezīs šādu rezultātu:

SQL servera funkcijas

Kad jāizmanto tabulas vērtības funkcijas?

Tabulas vērtības funkcijas parasti tiek izmantotas kā parametrizēti skati. Tabulas vērtības funkcijas ir elastīgākas nekā saglabātās procedūras, jo tās var izmantot visur, kur tiek izmantotas tabulas.

Secinājums

Šajā rakstā ir izskaidrots pilnīgs pārskats par SQL serverī izmantotajām funkcijām. Šeit mēs esam iemācījušies galvenokārt divu veidu funkcijas, ko izmanto SQL Server: sistēmas un lietotāja definētas funkcijas.