Funcțiile sunt foarte asemănătoare cu Proceduri stocate (SP), diferența constă în unele detalii, principalul fiind că returnează o singură valoare, atunci când un SP poate returna mai multe, în plus, nu avem nevoie de o variabilă pentru a stoca valoarea rezultată, astfel încât este mult mai ușor de utilizat într-un SELECT .
Crearea unei funcțiiObiectivul unei funcții este de a izola logica din spatele anumitor elemente, astfel încât acestea să fie mai ușor de utilizat, astfel putem documenta baza de date și funcționarea acesteia și putem simplifica acțiunile aplicației care ar putea comunica cu baza date. Pentru a crea o funcție vom folosi următoarele elemente:
- Casetă de interogare, unde putem scrie funcția.
- Schimbarea delimitatorului.
- Mecanismul de editare și manipulare a funcției.
Să vedem cum să definim o funcție printr-un exemplu:
CREAȚI FUNCȚIA get_country_name (param_country_code CHAR (2)) RETURSE VARCHAR (50) CITEȘTE DATE SQL ÎNCEPE DECLARA var_country_name VARCHAR (50) DEFAULT 'not found'; SELECȚIONEAZĂ descrierea DIN țARA ÎNDE cod = paramet_country_code INTO var_country_name; RETURN var_country_name; SFÂRȘIT //După cum putem vedea, sintaxa este foarte asemănătoare cu cea a SP, doar aici nu definim valorile lui ÎN Da OUT dacă nu, definim parametrii pe care îi introduc și declarăm o singură valoare care va fi ÎNTOARCERE.
Când mergem la secțiunea din Rutine În pagina de structură din baza de date o vom vedea reflectată în felul următor:
După ce am creat funcția noastră, să vedem cum o putem testa, această funcție pe care o folosim ca test ceea ce face este să consultăm un tabel de țări și să returnăm numele unei țări atunci când cerem un cod, în caz de neavând-o, ne întoarce nu a fost găsit:
SELECTAȚI CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) ca test;Pur și simplu facem o selecție cu un CONCAT pentru a uni rezultatele într-un șir și vom obține următoarele:
ca-> Canada, zz-> nu a fost găsitDupă cum putem vedea, este mult mai ușor decât construirea interogărilor pe care fiecare țară le va consulta separat.
Declanșatoare Declanșatoare sunt diferite de funcții și Proceduri stocateAcestea nu trebuie apelate de utilizator, ele vor apărea atunci când o acțiune este executată pe masa de care sunt legate, ceea ce ne conduce la cealaltă diferență a funcțiilor, este că acestea sunt generale; Declanșatoare dacă sunt legate de un anumit tabel.
Să vedem cum să creăm un Declanșator:
CREATE TRIGGER after_book_insert AFTER INSERT ON book FOR EW ROW BEGIN UPDATE author SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; SFÂRȘIT //După cum putem vedea, trebuie să definim și un nou delimitator // în caseta de interogare, astfel încât să putem include toate instrucțiunile din Declanșator, în cazul exemplului îl conectăm în După Insert adică, după efectuarea unei inserții și apoi executarea acțiunii definite, acest lucru ajută baza de date să gestioneze în mod autonom acțiunile pe măsură ce se întâmplă.
Odata ce Declanșator Când mergem la pagina structurii tabelului o vom vedea disponibilă: