Funkcije su vrlo slične Pohranjeni postupci (SP), razlika leži u nekim pojedinostima, a glavna je u tome što oni vraćaju samo jednu vrijednost, kada SP može vratiti više od jedne, dodatno nam ne treba varijabla za spremanje dobivene vrijednosti pa je mnogo lakše koristiti unutar SELECT .
Stvaranje funkcijeCilj funkcije je izolirati logiku iza određenih elemenata kako bi ih bilo lakše koristiti, na taj način možemo dokumentirati bazu podataka i njezin rad te biti u mogućnosti pojednostaviti radnje aplikacije koje bi mogle komunicirati s bazom podaci. Za izradu funkcije koristit ćemo sljedeće elemente:
- The Okvir za upite, gdje možemo napisati funkciju.
- Promjena graničnika.
- Mehanizam uređivanja i manipulacije funkcije.
Pogledajmo kako definirati funkciju kroz primjer:
CREATE FUNCTION get_country_name (param_country_code CHAR (2)) POVRATAK VARCHAR (50) ČITA SQL PODACI POČINJU DECLARE var_country_name VARCHAR (50) Zadana vrijednost "nije pronađeno"; SELECT description FROM country WHERE code = param_country_code INTO var_country_name; POVRATAK var_country_name; KRAJ //Kao što vidimo, sintaksa je vrlo slična onoj u SP, samo što ovdje ne definiramo vrijednosti U Y OUT ako ne definiramo parametre koje unose i deklariramo jednu vrijednost koja će biti POVRATAK.
Kad idemo na odjeljak Rutine Na stranici sa strukturom u bazi podataka vidjet ćemo da se to odražava na sljedeći način:
Nakon što smo stvorili svoju funkciju, da vidimo kako je možemo testirati, ova funkcija koju koristimo kao test ono što radi je konzultiranje s tablicom zemalja i vraćanje imena zemlje kada zatražimo kôd, u slučaju ne pronalazeći, vraća nam se nije pronađeno:
SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) kao test;Jednostavno radimo odabir s CONCAT -om kako bismo pridružili rezultate u nizu i dobit ćemo sljedeće:
ca-> Kanada, zz-> nije pronađenoKao što vidimo, mnogo je lakše od konstruiranja upita koje će svaka zemlja zasebno konzultirati.
OkidačiThe Okidači razlikuju se od funkcija i Pohranjeni postupciNe mora ih korisnik pozivati, one će se dogoditi kada se neka radnja izvrši na tablici na koju su povezane, što nas dovodi do druge razlike funkcija, a to je da su općenite; Okidači ako su povezani s određenom tablicom.
Pogledajmo kako stvoriti Okidač:
CREATE TRIGGER after_book_insert NAKON UMETANJA NA KNJIGI ZA SVAKI RED POČINJE AŽURIRANJE SET SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; KRAJ //Kao što vidimo, također moramo definirati novi razdjelnik // unutar okvira upita kako bismo mogli uključiti sve upute Okidač, u slučaju primjera povezujemo ga u Nakon Umetanja to jest, nakon umetanja i izvršavanja definirane radnje, to pomaže bazi podataka da samostalno upravlja radnjama koje se događaju.
Jednom Okidač Kad odemo na stranicu sa strukturom tablice, vidjet ćemo da je dostupna: