Funkcijos, saugomos MySQL

Turinys

Funkcijos, saugomos „MySQL“, naudojamos skaičiavimams ar operacijoms sujungti su įrašais ir duomenų laukais, paimtais iš SQL užklausos ir yra įprastos užduotys ar verslo taisyklės.

Didelis pranašumas yra tas, kad jie yra daugkartinio naudojimo, o programavimo kalba, kuria yra sukurtos funkcijos, yra SQL sakiniai ir sąlyginės arba pasikartojančios struktūros.

Skirtingai nuo saugomos procedūros, galite naudoti saugomą funkciją SQL sakiniuose, kur naudojate išraišką, leidžiančią sukurti sąlygines taisykles.

Pažvelkime į pavyzdį, kuriame sukuriame mokyklos duomenų bazę:

 KURTI DUOMENŲ BAZĘ „kolegija“
Toliau sukuriame lentelę su mokinių testų balais
 - - Lentelės „examnotes“ lentelės struktūra - CREATE LABLE “examnotes“ („id“ INT (11) NOT NULL AUTO_INCREMENT, „idalumno“ INT (11) NOT NULL, „material id“ INT (11) NOT NULL, `note1 "DECIMAL (10,2) NOT NULL", pastaba2 "DECIMAL (10,2) NOT NULL," note3 "DECIMAL (10,2) NOT NULL," vidutinis "DECIMAL (10,2) NOT NULL," būsena "VARCHAR (100) NULL NUSTATYMAS NULL, PAGRINDINIS RAKTAS ("id")) COLLATE = "latin1_swedish_ci" ENGINE = InnoDB - lentelės "notaseams" indeksai - ALTER TABLE "notasetest" ADD PIRMINIS RAKTAS ("id"); Toliau prie lentelės egzaminų pridedame keletą duomenų - Lentelės „notasensam“ INSERT INTO „užrašų egzamino“ duomenų išrašas („id“, „idalumno“, „subjectid“, „note1“, „note2“, „note3“, „ vidurkis "," būsena ") VERTĖS (1, 1000, 1," 8,00 "," 9,25 "," 7,00 "," 0,00 "," "), (2, 1001, 1," 6,33 "," 8,50 ", „8.00“, „0.00“, „“), (3, 1002, 1, „10.00“, „7.50“, „8.33“, „0.00“, „“), (4, 1003, 2, „4.50“) “,„ 2,00 “,„ 5,50 “,„ 0,00 “,“), (5, 1004, 1, „3,50“, „2,00“, „4,00“, „0,00“, „“);

Toliau sukursime išsaugotą funkciją, kuri peržiūrės visą pažymių lentelę ir apskaičiuos kiekvieno mokinio vidutinį pažymį pagal dalyką, o lentelę atnaujinsime, kad nurodytume, ar tai gerai, ar ne.

Funkciją galime sukurti iš „Phpmyadmin“ arba bet kurio redaktoriaus, kuris leidžia mums rašyti SQL kodą;

 CREATE DEFINER = `root` @` localhost` PROCEDURA `apskaičiuoti vidurkį` () KALBOS SQL NĖRA NUSTATOMAS SUDĖTIS SQL SQL SAUGUMO APIBRĖŽIMO KOMENTARAS '' BEGIN / * Deklaruoju funkcijos kintamuosius * / DECLARE final BOOL DEFAULT FALSE; DECLARE id INT; DECLARE INT studentas; DECLARE INT materija; DEKLARACINĖ pastaba1 FLOAT; DEKLARACINĖ pastaba2 FLOAT; DEKLARACINĖ pastaba3 FLOAT; DECLARE prom FLOAT; / * Skelbiu įrašų rinkinį arba žymeklį su SQL užklausos duomenimis * / DECLARE rslist CURSOR FOR SELECT id, studento ID, medžiagos ID, note1, note2, note3 iš bandymo pastabų; / * Paskelbiu kintamąjį, kad aptiktų pasikartojančios kilpos pabaigą DECLARE CONTINUE HANDLER for SQLSTATE '02000' SET final = TRUE; / * Atidarau įrašų rinkinį, kad pradėčiau duomenų perėjimą su kilpa * / OPEN rslista; kilpa: LOOP FETCH rslist INTO id, studentas, dalykas, 1 klasė, 2 klasė, 3 klasė; / * Apskaičiuoju vidurkį * / set avg = (1 pastaba + 2 pastaba + 3 pastaba) / 3; / * Išsaugoju ją atnaujindama lentelę * / atnaujinti egzamino žymėjimą nustatyta vidurkis = d kur idalumno = studentas ir idmateria = tema; / * Jei pažymys yra didesnis arba lygus 7, atnaujinu būseną kaip Patvirtinta, kitaip būsena bus nesėkminga. ELSE atnaujinimo egzamino žymėjimo rinkinys status = 'Nepavyko', kur studento ID = studento ir dalyko ID = dalykas; PABAIGA IF; JEI galutinai IR UŽDARYTI rslist; LEAVE kilpa; PABAIGA IF; PABAIGA LOPAS; GALAS
Tada mes galime vykdyti funkciją naudodami šią komandą:
 SKAMBINTI „apskaičiuoti vidurkį“ ()
Rezultatas bus automatiškai atnaujinti vidurkio ir būsenos stulpelius.

„MySQL“ saugomos funkcijos paprastai naudojamos skaičiavimams ir operacijoms, o saugomos procedūros paprastai naudojamos verslo taisyklėms vykdyti.

Funkcijos paprastai neturi įtakos duomenų bazės struktūrai, tačiau norėdami atlikti tam tikrus skaičiavimus, palyginti ir grąžinti rezultatą arba modifikuoti duomenis duomenų bazės lentelėje, taip pat galime sukurti trigerį, skirtą valdyti ar tikrinti funkcijos padarytus pakeitimus.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave