SQL serverio funkcijos yra duomenų bazės objektai, kuriuose yra a SQL sakinių rinkinys konkrečiai užduočiai atlikti . Funkcija priima įvesties parametrus, atlieka veiksmus ir grąžina rezultatą. Turėtume atkreipti dėmesį, kad funkcijos visada grąžina vieną reikšmę arba lentelę. Pagrindinis funkcijų tikslas yra lengvai atkartoti bendrą užduotį. Galime sukurti funkcijas vieną kartą ir naudoti jas keliose vietose pagal savo poreikius. SQL Server neleidžia naudoti duomenų įterpimo, trynimo ar atnaujinimo funkcijų duomenų bazės lentelėse.
Toliau pateikiamos SQL serverio funkcijų kūrimo taisyklės:
- Funkcija turi turėti pavadinimą, o pavadinimas negali prasidėti specialiuoju simboliu, pvz., @, $, # ar kitais panašiais simboliais.
- SELECT teiginiai yra vieninteliai, kurie veikia su funkcijomis.
- Funkciją galime naudoti bet kur, pvz., AVG, COUNT, SUM, MIN, DATE ir kitas funkcijas su SELECT užklausa SQL.
- Kai funkcija iškviečiama, ji kompiliuoja.
- Funkcijos turi grąžinti reikšmę arba rezultatą.
- Funkcijos naudoja tik įvesties parametrus.
- Funkcijose negalime naudoti TRY ir CATCH teiginių.
Funkcijų tipai
SQL serveris suskirsto funkcijas į du tipus:
- Sistemos funkcijos
- Vartotojo nustatytos funkcijos
Leiskite mums išsamiai apibūdinti abu tipus.
Sistemos funkcijos
Sistemos apibrėžtos funkcijos yra žinomos kaip sistemos funkcijos. Kitaip tariant, visi įmontuotos funkcijos serverio palaikomos, vadinamos sistemos funkcijomis. Integruotos funkcijos leidžia sutaupyti laiko atliekant konkrečią užduotį. Tokio tipo funkcijos paprastai veikia su SQL SELECT sakiniu, kad apskaičiuotų reikšmes ir tvarkytų duomenis.
Štai kai kurių sistemos funkcijų, naudojamų SQL serveryje, sąrašas:
hashset vs hashmap
- Eilučių funkcijos (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
- Datos ir laiko funkcijos (datetime, datetime2, smalldatetime)
- Suvestinės funkcijos (COUNT, MAX, MIN, SUM, AVG)
- Matematinės funkcijos (ABS, POWER, PI, EXP, LOG)
- Reitingavimo funkcijos (RANK, DENSE_RANK, ROW_NUMBER, NTILE)
Toliau pateiktame paveikslėlyje parodytos visos integruotos duomenų bazės funkcijos, naudojamos SQL serveryje:
Vartotojo nustatytos funkcijos
Funkcijos, kurios yra sukurta vartotojo sistemos duomenų bazėje arba vartotojo apibrėžtoje duomenų bazėje yra žinomos kaip vartotojo nustatytos funkcijos. UDF funkcijos priima parametrus, atlieka veiksmus ir grąžina rezultatą. Šios funkcijos padeda mums supaprastinti plėtrą, įtraukiant sudėtingą verslo logiką ir leidžiant ją pakartotinai naudoti bet kur, atsižvelgiant į poreikius. Dėl vartotojo nustatytų funkcijų kodą, reikalingą duomenų užklausai, parašyti daug lengviau. Jie taip pat pagerina užklausų skaitomumą ir funkcionalumą, taip pat leidžia kitiems vartotojams pakartoti tas pačias procedūras.
SQL serveris suskirsto vartotojo nustatytas funkcijas į du tipus:
npm diegimo komanda
- Skaliarinės funkcijos
- Lentelėje vertinamos funkcijos
Štai šių UDF funkcijų aprašymai.
Skaliarinės funkcijos
Skaliarinė funkcija SQL serveryje visada priima parametrus, vieną arba kelis, ir pateikia vieną reikšmę . Skaliarinės funkcijos yra naudingos supaprastinant mūsų kodą. Tarkime, kad galime atlikti sudėtingą skaičiavimą, kuris rodomas daugelyje užklausų. Tokiu atveju galime sukurti skaliarinę funkciją, kuri apjungia formulę ir naudoja ją kiekvienoje užklausoje, o ne kiekvienoje užklausoje.
Toliau pateikiama sintaksė, iliustruojanti skaliarinės funkcijos kūrimą SQL serveryje:
CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
Aukščiau pateikti sintaksės parametrai aprašyti toliau:
Pirmiausia nustatysime funkcijos pavadinimą po KURTI FUNKCIJĄ raktinius žodžius. Schemos pavadinimas yra neprivalomas. Jei neapibrėžsime schemos pavadinimo, SQL serveris naudoja numatytąją schemą dbo . Toliau mes nustatysime sąrašą parametrus įdėta skliausteliuose. Trečia, parašysime funkcijos teiginius ir tada į GRĄŽINA teiginį, apibrėžkite grąžinamos vertės duomenų tipą. Galiausiai pridėjome teiginį RETURN, kad pateiktume reikšmę funkcijos turinyje.
Pavyzdys
Šis pavyzdys sukurs funkciją apskaičiuoti grynuosius pardavimus pagal kiekį, kainą ir nuolaidos vertę:
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;
Dabar galime naudoti šią funkciją bet kurio pardavimo užsakymo gryniesiems pardavimams apskaičiuoti apibrėžtoje lentelėje.
Šis paveikslėlis rodomas, kuriame galime rasti skaliarines funkcijas:
xml komentaras
Skaliarines funkcijas galime vadinti taip pat, kaip ir įtaisytąją SQL serverio funkciją. Pavyzdžiui, aukščiau pateiktą funkciją udfNet_Sales galime iškviesti taip, kaip nurodyta toliau:
SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales;
Vykdydami šią funkciją, bus grąžinti grynieji pardavimai:
SQL serveris taip pat leidžia mums Norėdami pakeisti skaliarinę funkciją, naudodami ALTER raktažodį. Štai sintaksė, kaip tai padaryti:
ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END
Norėdami pašalinti skaliarinę funkciją iš SQL serverio duomenų bazės, galime naudoti toliau pateiktą teiginį:
DROP FUNCTION [schema_name.]function_name;
Lentelėje vertinamos funkcijos
SQL serverio lentelės reikšmės funkcijos yra vartotojo apibrėžta funkcija kuris pateikia lentelės tipo duomenis. Kadangi ši funkcija grąžinimo tipas yra lentelė , galime naudoti taip pat, kaip ir lentelę.
Lentelės vertės funkciją galime suskirstyti į du tipus:
simbolis į eilutę java
1. Įterptinės lentelės reikšmės funkcijos
Ši UDF funkcija grąžina lentelės kintamąjį pagal funkcijos atliekamą veiksmą. Lentelės kintamojo vertei nustatyti turėtų būti naudojamas vienas SELECT sakinys.
Pavyzdys
Toliau pateiktame pavyzdyje bus sukurta lentelė-reikšmių funkcija ir nuskaityti darbuotojo lentelės duomenys:
--It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee)
Šioje sintaksėje GRĄŽINIMO LENTELĖ nurodo, kad funkcija grąžins lentelę. Kadangi nėra PRADĖTI... PABAIGA pareiškimą, jis tiesiog užklausia duomenis iš darbuotojų lentelės. Be to, jei jis neturi jokių parametrų, jis bus iškviestas tiesiogiai.
Lentelės vertės funkcijas galime iškviesti naudodami NUO punktas PASIRINKTI užklausą. Pavyzdžiui , galime vadinti aukščiau nurodytu udf_GetEmployee veikia taip, kaip nurodyta toliau:
SELECT * FROM udf_GetEmployee();
Vykdydami šią funkciją gausite tokį rezultatą:
SQL serveris taip pat leidžia modifikuoti lentelės vertės funkcijas naudojant raktinį žodį ALTER, o ne CREATE. Likusi scenarijaus dalis yra tokia pati.
Kelių teiginių lentelės reikšmės funkcijos (MSTVF)
Ši UDF funkcija grąžina lentelės kintamąjį remiantis funkcijos atliekamu veiksmu. Jame gali būti vienas arba keli teiginiai rezultatui gauti, taip pat tai funkcija, kuri pateikia kelių teiginių rezultatą lentelės forma. Tai naudinga, nes šioje funkcijoje galime vykdyti kelis teiginius ir gauti apibendrintus rezultatus į grąžintą lentelę. Šią funkciją galime apibrėžti naudodami lentelės kintamąjį kaip grąžinamąją reikšmę. Funkcijos viduje vykdome kelias užklausas ir įterpiame duomenis į šį lentelės kintamąjį.
Šis pavyzdys sukuria funkcijos pavadinimą 'daugiavertis' tai grąžina @Darbuotojas' stalo. Jame yra trys laukai, pavadinti id, emp_name ir atlyginimas iš 'Darbuotojas' lentelę naudodami INSERT teiginį, o tada naudokite teiginį UPDATE darbuotojo vardui atnaujinti.
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
Kelių teiginių lentelės vertės funkcijas galime iškviesti naudodami užklausos SELECT sąlygą FROM. Pavyzdžiui , aukščiau nurodytą funkciją galime vadinti taip, kaip nurodyta toliau:
SELECT * FROM MULTIVALUED();
Vykdydami šią funkciją gausite tokį rezultatą:
jpa pavasarį
Kada turėtų būti naudojamos lentelės vertės funkcijos?
Lentelės reikšmės funkcijos dažniausiai naudojamos kaip parametrizuoti rodiniai. Lentelės reikšmės funkcijos yra lankstesnės nei saugomos procedūros, nes jas galima naudoti visur, kur naudojamos lentelės.
Išvada
Šiame straipsnyje bus paaiškinta visa SQL serveryje naudojamų funkcijų apžvalga. Čia mes sužinojome daugiausia dviejų tipų funkcijas, naudojamas SQL serveryje: sistemos ir vartotojo apibrėžtas funkcijas.