• Transact-SQL funkcije. Osnovne SQL naredbe koje bi svaki Sql programer trebao znati Primjeri upita matematičkih funkcija

    Kao i većina programskih jezika, SQL ima funkcije za rukovanje podacima. Vrijedno je napomenuti da, za razliku od SQL naredbi, funkcije nisu standardizirane za sve vrste DBMS-a, odnosno za izvođenje istih operacija nad podacima, različiti DBMS-ovi imaju vlastita imena funkcija. To znači da kod upita napisan u jednom DBMS-u možda neće raditi u drugom, i to se mora uzeti u obzir u budućnosti. Prije svega, to se odnosi na funkcije za obradu tekstualnih vrijednosti, pretvaranje tipova podataka i manipuliranje datumima.

    Tipično, DBMS podržava standardni skup tipova funkcija, naime:

    • Tekst funkcije koje služe za obradu teksta (odabir dijela znakova u tekstu, određivanje duljine teksta, pretvaranje znakova u velika ili mala slova...)
    • Numeričke funkcije. Koristi se za izvođenje matematičkih operacija na numeričkim vrijednostima
    • Funkcije datuma i vremena (izvođenje manipulacije datumom i vremenom, izračunavanje razdoblja između datuma, provjera točnosti datuma itd.)
    • Statističke funkcije (za izračunavanje maksimalnih/minimalnih vrijednosti, prosječnih vrijednosti, brojanje broja i zbroja...)
    • Funkcije sustava (pružaju razne servisne informacije o DBMS-u, korisniku itd.).

    1. SQL funkcije za obradu teksta

    Implementacija SQL-a u Access DBMS ima sljedeće funkcije za obradu teksta:

    Pretvorimo imena proizvoda u velika slova pomoću funkcije UCase():

    IZABERI Proizvod, UCase(Product) AS Product_UCase FROM Sumproduct

    Pomoću funkcije odaberite prva tri znaka u tekstu LIJEVO():

    IZABERI Proizvod, LIJEVO(Proizvod, 3) KAO Proizvod_LIJEVO OD Sumproizvoda

    2. SQL funkcije za obradu brojeva

    Funkcije za obradu brojeva dizajnirane su za izvođenje matematičkih operacija na numeričkim podacima. Ove su funkcije namijenjene algebarskim i geometrijskim izračunima, pa se koriste puno rjeđe nego funkcije za obradu datuma i vremena. Međutim, numeričke funkcije su najviše standardizirane u svim verzijama SQL-a. Pogledajmo popis numeričkih funkcija:

    Naveli smo samo nekoliko glavnih značajki, ali uvijek možete pogledati dokumentaciju vaše baze podataka za potpuni popis podržanih značajki i njihove detaljne opise.

    Na primjer, napišimo upit za dobivanje kvadratnog korijena brojeva u stupcu Iznos koristeći funkciju SQR():

    IZABERI Iznos, SQR(Iznos) KAO Iznos_SQR IZ Sumproizvoda

    3. SQL funkcije za obradu datuma i vremena

    Funkcije za manipulaciju datumom i vremenom jedne su od najvažnijih i najčešće korištenih SQL funkcija. Baze podataka pohranjuju vrijednosti datuma i vremena u posebnom formatu, tako da se ne mogu izravno koristiti bez dodatne obrade. Svaki DBMS ima svoj vlastiti skup funkcija za obradu datuma, koji, nažalost, ne dopušta njihov prijenos na druge platforme i SQL implementacije.

    Popis nekih funkcija za rukovanje datumom i vremenom DBMS pristup:

    Pogledajmo primjer kako funkcija radi DatePart():

    IZABERI Datum1, DatePart("m", Datum1) KAO Mjesec1 FROM Sumproduct

    Funkcija DatePart() ima dodatni parametar koji nam omogućuje prikaz traženog dijela datuma. U primjeru smo koristili parametar "m", koji prikazuje broj mjeseca (na isti način možemo prikazati godinu - "yyyy", četvrtina - "q", dan - "d", tjedan - "w", sat - "h", minute - "n", sekundi - "s" itd.).

    4. SQL statističke funkcije

    Statističke funkcije pomažu nam da dobijemo gotove podatke bez uzorkovanja. SQL upiti s ovim funkcijama često se koriste za analizu i izradu raznih izvješća. Primjer takvih odabira može biti: određivanje broja redaka u tablici, dobivanje zbroja vrijednosti za određeno polje, traženje najveće/najmanje ili prosječne vrijednosti u određenom stupcu tablice. Također imajte na umu da statističke funkcije podržavaju svi DBMS-ovi bez puno promjena u pravopisu.

    Popis statističkih funkcija u DBMS pristup:

    RAČUNATI():

    IZABERI BROJ(*) KAO BROJ1 OD Sumproizvoda- vraća broj svih redaka u tablici

    IZABERI BROJ(proizvod) KAO BROJ2 OD Sumproizvoda- vraća broj svih nepraznih redaka u polju proizvod

    Namjerno smo uklonili jednu vrijednost u stupcu proizvod da pokaže razliku u tome kako dva upita rade.

    Primjeri korištenja funkcija IZNOS():

    IZABERI SUM(količina) AS Sum1 FROM Sumproduct WHERE Mjesec = "travanj"

    Ovim zahtjevom prikazali smo ukupan broj prodane robe u travnju.

    IZABERI SUM(Količina*Iznos) AS Sum2 FROM Sumproduct

    Kao što vidite, u agregatnim funkcijama možemo izvoditi izračune na više stupaca koristeći standardne matematičke operatore.

    Primjer korištenja funkcije MIN():

    IZABERI MIN(iznos) KAO Min1 FROM Sumproduct

    Primjer korištenja funkcije MAX():

    IZABERI MAX(iznos) KAO Max1 FROM Sumproduct

    Primjer korištenja funkcije AVG():

    IZABERI PROSJ.(Iznos) KAO Prosj.1 OD Sumproduct

    Koraci ove faze učenja SQL upita osmišljeni su da pokažu činjenicu da SQL ne samo da može napraviti složene odabire i sortirati podatke, već i izračunati rezultate matematičkih funkcija, izvršiti transformaciju teksta, grupirati zapise itd. Točnije, sve to ne može SQL, već oni koji ga podržavaju. SQL sa svojim standardima samo formulira zahtjeve za te iste DBMS.

    Korak 15 SUM, AVG, MIN, MAX, COUNT…

    Ovaj korak pokazat će vam kako koristiti najjednostavnije funkcije u SQL-u, kao što su zbroj, min, maks, prosjek i tako dalje. Krenimo odmah s primjerom izvođenja prosječnog radnog staža svih zaposlenika.

    ODABERITE AVG(D_STAFF.S_EXPERIENCE) KAO [PROSJEČNO ISKUSTVO OSOBLJA] FROM D_STAFF

    SQL funkcija AVG.

    Slično tome, možete izračunati minimalne i maksimalne vrijednosti (MIN, MAX), ukupni iznos (SUM), itd. Savjetujem vam da ga isprobate pomoću vodiča. Vrijedno je pokušati definirati dodatne kriterije za odabir zapisa uključenih u određivanje konačne vrijednosti funkcije pomoću WHERE klauzule.

    Gore navedene funkcije koriste cijeli rezultat upita za određivanje svoje vrijednosti. Takve se funkcije nazivaju agregat . Također, postoji niz funkcija čiji argumenti nisu sve vrijednosti stupca definiranog u upitu, već svaka pojedinačna vrijednost svakog pojedinog retka rezultata. Primjer takve funkcije je SQL funkcija za izračunavanje duljine tekstualnog polja LEN:

    SELECT S_NAME, LEN(D_STAFF.S_NAME) AS [LENGTH] FROM D_STAFF


    Može se koristiti superpozicija SQL funkcija, kao što je prikazano u nastavku, i izračunajte maksimalnu vrijednost duljine polja S_NAME.

    SELECT MAX(LEN(D_STAFF.S_NAME)) AS [MAX LENGTH] FROM D_STAFF


    SQL funkcija MAX.

    Pa, zaključno, sve zajedno.

    SELECT SUM(D_STAFF.S_EXPERIENCE) AS [SUM], AVG(D_STAFF.S_EXPERIENCE) AS [AVERAGE], MIN(D_STAFF.S_EXPERIENCE) AS [MINIMUM], MAX(D_STAFF.S_EXPERIENCE) AS [MAXIMUM], COUNT(*) AS [BROJ ZAPISA], MAX(LEN(D_STAFF.S_NAME)) KAO [MAKSIMALNA DULJINA] OD D_STAFF


    Primjer korištenja skupnih SQL funkcija.

    Obratite pozornost na argument funkcije COUNT. Naveo sam (*) kao argument jer želim dobiti točan ukupan broj zapisa. Ako navedete, na primjer, COUNT(S_NAME), tada će rezultat biti broj nepraznih S_NAME vrijednosti ​​(S_NAME IS NOT NULL). Bilo bi moguće napisati COUNT(DISTINCT S_NAME) i dobiti broj jedinstvenih S_NAME vrijednosti, ali MS Access, nažalost, ne podržava ovu opciju. U našem primjeru, COUNT(S_NAME) i COUNT(*) daju točno isti rezultat.

    Korak 16 Transformacija teksta

    Često tekstualne vrijednosti popunjavaju korisnici softvera na različite načine: tko piše puno ime. velikim slovom, koji nije; neki sve pišu velikim slovima. Mnogi obrasci za izvješćivanje zahtijevaju jedinstven pristup, a ne samo obrasci za izvješćivanje. Kako bi riješio ovaj problem, SQL ima dvije funkcije UCASE i LCASE. Primjer zahtjeva i rezultat njegove obrade prikazani su u nastavku:

    SELECT UCASE(D_STAFF.S_NAME) AS , LCASE(D_STAFF.S_NAME) AS FROM D_STAFF


    SQL funkcije UCASE i LCASE.

    Korak 17: SQL i manipulacija nizovima

    Postoji i tako divna MID funkcija koja će vam pomoći riješiti problem izdvajanja dijela niza iz cijele vrijednosti tekstualnog polja. I ovdje bi najbolji komentar bio primjer - primjer "sprdnje" imena korisničkih profila.

    SELECT UCASE(MID(P_NAME,3,5)) FROM D_PROFILE


    Superpozicija SQL funkcija UCASE i MID.

    Iz vrijednosti imena profila smo "izrezali" 5 znakova, počevši od trećeg, i dobili hrpu ponavljajućeg "smeća". Kako bismo ostavili samo jedinstvene vrijednosti, koristit ćemo ključnu riječ DISTINCT.

    SELECT DISTINCT UCASE(MID(P_NAME,3,5)) AS FROM D_PROFILE


    Odabir jedinstvenih vrijednosti agregatne funkcije.

    Ponekad je potrebno koristiti izraze s funkcijom LEN kao argumente funkciji MID. U sljedećem primjeru već prikazujemo zadnjih 5 znakova u imenima profila.

    SELECT UCASE(MID(P_NAME,LEN(P_NAME)-4,5)) FROM D_PROFILE


    Korištenje SQL funkcije LEN.

    Korak 18. Korištenje SQL funkcija u kriterijima za odabir zapisa. izjava HAVING

    Nakon što smo se pozabavili funkcijama, gotovo odmah se postavlja pitanje kako se one mogu koristiti u kriterijima za odabir zapisa? Neke funkcije, naime one koje nisu agregati, jednostavne su za korištenje. Ovdje je, na primjer, popis zaposlenika čije je puno ime više od 25 znakova.

    SELECT S_NAME FROM D_STAFF WHERE LEN(D_STAFF.S_NAME) > 25


    Korištenje neagregatne LEN funkcije u uvjetima SQL upita.

    Pa, ako, na primjer, trebate prikazati identifikatore svih pozicija koje zauzima više od jednog zaposlenika u tvrtki, tada ovaj pristup neće funkcionirati. Ono što želim reći je da sljedeći upit možda nema smisla, ali je netočan sa stajališta strukturiranog upita. To je zbog činjenice da za ispravnu obradu takvih SQL upita korištenjem agregatnih funkcija, jedan linearni prolaz kroz zapise zaposlenika neće biti dovoljan.

    SELECT S_POSITION FROM D_STAFF WHERE COUNT(S_POSITION)>1

    Za takve slučajeve u SQL je uvedena ključna riječ HAVING koja će nam pomoći u rješavanju problema s pozicijama i zaposlenicima.

    ODABERITE S_POZICIJU IZ GRUPE D_STAFF PO S_POZICIJI IMA BROJ(S_POSITION)>1


    Korištenje agregatnih funkcija u uvjetima SQL upita.

    Korak 19. Grupiranje podataka u rezultatima SQL upita s operatorom GROUP BY

    Klauzula GROUP BY potrebna je za grupiranje vrijednosti agregatnih funkcija prema vrijednostima njihovih povezanih polja. Potreban je kada želimo koristiti vrijednost agregatne funkcije u kriterijima odabira zapisa (prethodni korak). Također je potreban kada želimo uključiti vrijednost agregatne funkcije u rezultat upita. Ali u svom najjednostavnijem obliku, grupiranje je ekvivalentno isticanju jedinstvenih vrijednosti stupca. Pogledajmo primjer zahtjeva.

    SELECT S_POSITION FROM D_STAFF


    A ovo su dvije opcije koje vam omogućuju prikaz samo jedinstvenih vrijednosti S_POSITION.

    ODABERITE S_POZICIJU IZ D_STAFF GRUPE PO S_POZICIJU

    ODABERITE DISTINCT S_POSITION FROM D_STAFF


    Pa, vratimo se sada na grupiranje funkcijskih vrijednosti prema vrijednostima polja koja su s njima povezana. Prikažimo za svaki korisnički profil broj zapisa povezanih s njim u tablici D_STAFF_PROFILE.

    SELECT PROFILE_ID AS , COUNT(PROFILE_ID) AS [BROJ ZAPISA] FROM D_STAFF_PROFILE GROUP BY PROFILE_ID


    Korištenje agregatne SQL funkcije s grupiranjem.

    Operator GROUP BY vam također omogućuje grupiranje rezultata upita prema više od jednog polja navodeći ih odvojene zarezima. Nadam se da nakon svega navedenog dodatni komentari na rezultat zadnjeg upita nisu potrebni.

    SELECT S.S_POSITION AS , S.S_NAME AS [EMPLOYEE], COUNT(SP.STAFF_ID) AS [BROJ ZAPISA U TABLICI D_STAFF_PROFILE] FROM D_STAFF S, D_STAFF_PROFILE SP WHERE S.XD_IID=SP.STAFF_ID GROUP BY S.S_POSITION, S . S_NAME


    Grupiranje redaka rezultata SQL upita prema više polja.

    Naučimo sažimati. Ne, ovo nisu rezultati učenja SQL-a, već rezultati vrijednosti stupaca tablica baze podataka. SQL agregatne funkcije rade na vrijednostima stupca kako bi proizvele jednu vrijednost rezultata. Najčešće korištene SQL agregatne funkcije su SUM, MIN, MAX, AVG i COUNT. Postoje dva slučaja u kojima se trebaju koristiti agregatne funkcije. Prvo, agregatne funkcije se same koriste i vraćaju jednu vrijednost rezultata. Drugo, agregatne funkcije se koriste s klauzulom SQL GROUP BY, odnosno s grupiranjem po poljima (stupcima) kako bi se dobile rezultirajuće vrijednosti u svakoj grupi. Razmotrimo prvo slučajeve korištenja agregatnih funkcija bez grupiranja.

    SQL funkcija SUM

    SQL funkcija SUM vraća zbroj vrijednosti stupca u tablici baze podataka. Može se primijeniti samo na stupce čije su vrijednosti brojevi. SQL upiti za dobivanje rezultirajućeg zbroja počinju ovako:

    ODABERI ZBIR (IME STUPCA) ...

    Nakon ovog izraza slijedi FROM (TABLE_NAME), a zatim se uvjet može navesti korištenjem WHERE klauzule. Osim toga, DISTINCT može biti postavljen kao prefiks uz naziv stupca kako bi se naznačilo da će se uzeti u obzir samo jedinstvene vrijednosti. Prema zadanim postavkama, sve vrijednosti se uzimaju u obzir (za ovo možete posebno navesti ne DISTINCT, već ALL, ali riječ ALL nije obavezna).

    Primjer 1 Postoji baza podataka tvrtke s podacima o odjelima i zaposlenicima. Tablica osoblja također ima stupac s podacima o plaćama zaposlenika. Izbor iz tablice ima sljedeći oblik (za povećanje slike kliknite lijevom tipkom miša):

    Da biste dobili zbroj svih plaća, koristite sljedeći upit:

    SELECT SUM (Plaća) FROM osoblja

    Ovaj će upit vratiti vrijednost 287664,63.

    A sada . Na vježbama već počinjemo komplicirati zadatke, približavajući ih onima koji se susreću u praksi.

    SQL MIN funkcija

    Funkcija SQL MIN također radi na stupcima čije su vrijednosti brojevi i vraća najmanju vrijednost od svih vrijednosti u stupcu. Ova funkcija ima sintaksu sličnu onoj funkcije SUM.

    Primjer 3 Baza podataka i tablica su iste kao u primjeru 1.

    Potrebno je saznati minimalnu plaću za zaposlenike odjela broj 42. Da biste to učinili, napišite sljedeći upit:

    Upit će vratiti vrijednost 10505,90.

    I opet vježba za samoodređenje. U ovoj i nekim drugim vježbama bit će vam potrebna ne samo tablica Staff, već i tablica Org koja sadrži podatke o odjelima tvrtke:


    Primjer 4 Tablica Org dodaje se tablici Staff koja sadrži podatke o odjelima tvrtke. Ispišite najmanji broj godina koje je jedan zaposlenik radio u odjelu koji se nalazi u Bostonu.

    SQL MAX funkcija

    Funkcija SQL MAX radi slično i ima sličnu sintaksu, koja se koristi kada želite odrediti najveću vrijednost među svim vrijednostima stupca.

    Primjer 5

    Potrebno je saznati maksimalnu plaću zaposlenika odjela broj 42. Da biste to učinili, napišite sljedeći upit:

    Upit će vratiti vrijednost 18352,80

    Vrijeme je vježbe za samoodređenje.

    Primjer 6 Opet radimo s dvije tablice - Staff i Org. Prikaz naziva odjela i maksimalnog iznosa provizije koju prima jedan zaposlenik u odjelu koji pripada skupini odjela (Division) Istočni. Koristiti JOIN (spajanje tablica) .

    SQL AVG funkcija

    Ono što je rečeno o sintaksi za prethodno opisane funkcije vrijedi i za SQL AVG funkciju. Ova funkcija vraća prosjek svih vrijednosti u stupcu.

    Primjer 7 Baza podataka i tablica su iste kao u prethodnim primjerima.

    Neka je potrebno saznati prosječni radni staž zaposlenika odjela broj 42. Da bismo to učinili, pišemo sljedeći upit:

    Rezultat će biti 6,33

    Primjer 8 Radimo za jednim stolom - Staff. Prikaz prosječne plaće zaposlenika s iskustvom od 4 do 6 godina.

    SQL funkcija COUNT

    Funkcija SQL COUNT vraća broj zapisa u tablici baze podataka. Ako navedete SELECT COUNT(COLUMNAME) ... u upitu, tada će rezultat biti broj zapisa bez uzimanja u obzir onih zapisa u kojima je vrijednost stupca NULL (nedefinirano). Ako koristite zvjezdicu kao argument i pokrenete SELECT COUNT(*) ... upit, rezultat će biti broj svih zapisa (redaka) u tablici.

    Primjer 9 Baza podataka i tablica su iste kao u prethodnim primjerima.

    Želite znati broj svih zaposlenika koji primaju provizije. Broj zaposlenika čije vrijednosti stupca Comm nisu NULL vratit će sljedeći upit:

    SELECT COUNT (Comm) FROM Staff

    Rezultat će biti vrijednost 11.

    Primjer 10 Baza podataka i tablica su iste kao u prethodnim primjerima.

    Ako želite znati ukupan broj zapisa u tablici, upotrijebite upit sa zvjezdicom kao argument funkcije COUNT:

    SELECT COUNT (*) FROM Staff

    Rezultat će biti vrijednost 17.

    Sljedeći vježba za samoodređenje trebate koristiti podupit.

    Primjer 11. Radimo za jednim stolom - Staff. Prikažite broj zaposlenih u odjelu Plains.

    Skupne funkcije sa SQL GROUP BY

    Sada pogledajmo korištenje agregatnih funkcija zajedno s klauzulom SQL GROUP BY. Klauzula SQL GROUP BY koristi se za grupiranje rezultirajućih vrijednosti po stupcima u tablici baze podataka. Stranica ima lekcija posvećena ovom operatoru zasebno .

    Primjer 12. Postoji baza portala oglasa. Ima tablicu oglasa koja sadrži podatke o oglasima koji su poslani za tjedan. Stupac Kategorija sadrži podatke o velikim kategorijama oglasa (npr. Nekretnine), a stupac Dijelovi sadrži podatke o manjim dijelovima koji su uključeni u kategorije (npr. dijelovi Apartmani i Vile su dijelovi kategorije Nekretnine). Stupac Jedinice sadrži podatke o broju poslanih oglasa, a stupac Novac iznos novca zarađen za slanje oglasa.

    KategorijadioJediniceNovac
    Prijevozmotorna vozila110 17600
    NekretninaApartmani89 18690
    NekretninaDače57 11970
    PrijevozMotocikli131 20960
    Građevinski materijalDaske68 7140
    Elektrotehnikatelevizori127 8255
    ElektrotehnikaHladnjaci137 8905
    Građevinski materijalRegips112 11760
    Slobodno vrijemeknjige96 6240
    NekretninaKod kuće47 9870
    Slobodno vrijemeglazba, muzika117 7605
    Slobodno vrijemeIgre41 2665

    Pomoću klauzule SQL GROUP BY pronađite iznos novca generiran slanjem oglasa u svakoj kategoriji. Pišemo sljedeći upit:

    ODABERITE kategoriju, SUM (novac) KAO novac IZ oglasa GRUPIRAJ PO kategoriji

    Primjer 13 Baza podataka i tablica su iste kao u prethodnom primjeru.

    Pomoću klauzule SQL GROUP BY saznajte koji je dio svake kategorije imao najviše oglasa. Pišemo sljedeći upit:

    ODABERITE kategoriju, dio, MAX (jedinice) KAO maksimum IZ oglasa GRUPIRAJ PO kategoriji

    Rezultat će biti sljedeća tablica:

    Mogu se dobiti ukupne i pojedinačne vrijednosti u jednoj tablici kombiniranje rezultata upita korištenjem operatora UNION .

    Relacijske baze podataka i SQL jezik

    U ovom ćete vodiču naučiti kako stvaranje i brisanje funkcija u SQL Serveru(Transact-SQL) sa sintaksom i primjerima.

    Opis

    U SQL Serveru funkcija je pohranjeni program kojemu možete proslijediti parametre i vratiti vrijednost.

    Stvori funkciju

    Možete kreirati vlastite funkcije u SQL Serveru (Transact-SQL). Pogledajmo pobliže.

    Sintaksa

    Sintaksa funkcija u SQL Serveru (Transact-SQL):

    CREATE FUNCTION naziv_funkcije
    ([ @parametar [ AS ] tip podataka
    [ = zadano ] [ SAMO ZA ČITANJE ]
    , tip podataka @parametar [AS].
    [ = zadano ] [ SAMO ZA ČITANJE ] ]
    RETURNS return_datatype
    [ SA ( ŠIFRIRANJEM
    | SCHEMABINDING
    | VRAĆA NULL NA NULL INPUT
    | POZIVA NA NULL INPUT
    | EXECUTE AS klauzula]
    [ AS ]
    POČETI
    izvršni_odjeljak
    RETURN povratna_vrijednost
    KRAJ;

    Opcije ili argumenti

    schema_name je naziv sheme kojoj ova funkcija pripada.
    function_name je naziv funkcije u SQL Serveru.
    @parametar - jedan ili više parametara koji se prosljeđuju funkciji.
    type_schema_name je shema koja posjeduje tip podataka, ako je primjenjivo.
    tip podataka - tip podataka za @parametar.
    default je zadana vrijednost koju treba dodijeliti parametru @parameter.
    SAMO ZA ČITANJE - to znači da @parameter ne može biti prebrisan od strane funkcije.
    return_datatype je tip podataka povratne vrijednosti funkcije.
    ŠIFRIRANJE - To znači da izvor za funkciju neće biti pohranjen kao običan tekst u prikazima sustava SQL Servera.
    SCHEMABINDING - To znači da se temeljni objekti ne mogu mijenjati kako bi utjecali na funkciju.
    VRAĆA NULL NA NULL INPUT - To znači da će funkcija vratiti NULL ako je bilo koji parametar NULL bez potrebe za izvršavanjem funkcije.
    CALL ON NULL INPUT - to znači da će se funkcija izvršiti čak i ako je bilo koji parametar NULL.
    IZVRŠI KAO - postavlja sigurnosni kontekst za izvršavanje funkcije.
    return_value je vrijednost koju vraća funkcija.

    Primjer

    Pogledajmo primjer kreiranja funkcije u SQL Serveru (Transact-SQL).
    Ispod je jednostavan primjer funkcije:

    Transact SQL

    CREATE FUNCTION ReturnSite (@site_id INT) VRAĆA VARCHAR(50) AS BEGIN DECLARE @site_name VARCHAR(50); AKO @site_id< 10 SET @site_name = "yandex.com"; ELSE SET @site_name = "google.com"; RETURN @site_name; END;

    STVARANJE FUNKCIJE ReturnSite

    (@site_id INT)

    VRAĆA VARCHAR(50)

    POČETI

    DECLARE @site_name VARCHAR(50) ;

    AKO @site_id< 10

    SET @site_name = "yandex.com" ;

    DRUGO

    SET @site_name = "google.com" ;

    RETURN @ site_name ;

    KRAJ ;

    Ova funkcija se zove ReturnSite. Ima jedan parametar pod nazivom @site_id koji je INT tip podataka. Funkcija vraća vrijednost VARCHAR(50) navedenu u klauzuli RETURNS.
    Zatim se možete pozvati na novu funkciju ReturnSite ovako.

    Funkcije su posebna vrsta naredbi u SQL skupu naredbi, a svaki dijalekt ima vlastitu implementaciju skupa naredbi. Kao rezultat, možemo reći da su funkcije naredbe koje se sastoje od jedne riječi i vraćaju jednu vrijednost. Vrijednost funkcije može ovisiti o ulaznim parametrima, kao u slučaju funkcije koja izračunava prosjek popisa vrijednosti u bazi podataka. Međutim, mnoge funkcije ne uzimaju nikakve ulazne parametre, na primjer, funkcija koja vraća trenutno vrijeme sustava je CURRENTJ1ME.

    ANSI standard podržava nekoliko korisnih značajki. Ovo poglavlje daje opis ovih značajki, kao i detaljne opise i primjere za svaku platformu. Osim toga, svaka platforma ima dugačak popis vlastitih, internih funkcija koje nadilaze SQL standard. Ovo poglavlje pruža parametre i opise svih internih funkcija svake od platformi.

    Osim toga, većina platformi ima mogućnost stvaranja prilagođenih funkcija. Za više informacija o korisnički definiranim funkcijama, pogledajte odjeljak Izjave CREATE/ALTER FUNCTION/PROCEDURE.

    Vrste funkcija

    Postoje različiti načini klasifikacije funkcija. Sljedeći pododjeljci opisuju važne razlike koje vam pomažu razumjeti kako značajke funkcioniraju.

    Determinističke i nedeterminističke funkcije

    Funkcije mogu biti determinističke i nedeterminističke. Deterministička funkcija uvijek vraća isti rezultat za isti skup ulaznih vrijednosti. Nedeterminističke funkcije mogu vratiti različite rezultate za različite pozive, čak i ako im se daju iste ulazne vrijednosti.

    Zašto je toliko važno da isti inputi daju iste rezultate? Ovo je važno jer definira način na koji se funkcije koriste u pogledima, korisnički definiranim funkcijama i pohranjenim procedurama. Ograničenja se razlikuju ovisno o platformi, ali ponekad se u tim objektima mogu koristiti samo determinističke funkcije. Na primjer, SQL Server može stvoriti indeks na izrazu u stupcu, sve dok izraz ne sadrži nedeterminističke funkcije. Pravila i ograničenja razlikuju se od platforme do platforme, stoga pogledajte dokumentaciju proizvođača kada koristite funkcije.

    Agregatne i skalarne funkcije

    Drugi način za kategorizaciju funkcija je njihova sposobnost da rade samo na jednom nizu, ili na skupu vrijednosti, ili na skupovima nizova. Agregatne funkcije rade na skupu vrijednosti i vraćaju jednu ukupnu vrijednost. Skalarne funkcije vraćaju jednu vrijednost, ovisno o skalarnim ulaznim argumentima. Neke skalarne funkcije, kao što je CURRENTJTIME, ne zahtijevaju argumente.

    Funkcije prozora

    Funkcije prozora mogu se smatrati sličnim agregatnim funkcijama po tome što mogu raditi na više redaka odjednom. Razlika je u tome kako su te linije navedene. Funkcije agregata rade na skupovima redaka navedenim u klauzuli GROUP BY. U slučaju prozorskih funkcija, skup redaka se navodi sa svakim pozivom funkcije, a različiti pozivi funkcija unutar istog upita mogu djelovati na različitim skupovima redaka.