Documente Academic
Documente Profesional
Documente Cultură
Reteta procedura
1. Începe prin a deschide un editor de text sau un client MySQL pentru a scrie codul
procedurii.
2. Asigură-te că ești conectat la baza de date corectă utilizând comanda USE
nume_baza_de_date;, înlocuind "nume_baza_de_date" cu numele bazei de date în care
dorești să creeze procedura.
3. Folosește declarația DELIMITER pentru a schimba delimitatorul implicit (;) cu un alt
caracter care nu este folosit în procedura ta. Acest lucru este necesar pentru a putea
include mai multe instrucțiuni în cadrul procedurii. De exemplu, poți utiliza DELIMITER
$$.
4. Scrie declarația pentru a crea procedura, specificând numele și lista de parametri. Un
exemplu ar fi:
6. Poți utiliza variabilele declarate în diferite instrucțiuni ale procedurii, cum ar fi atribuirea
de valori sau utilizarea acestora în interogări. De exemplu:
7. Pentru a trata erorile și a face rollback la tranzacție în caz de eroare, poți utiliza un bloc
de tratare a erorilor folosind sintaxa DECLARE ... HANDLER. Un exemplu ar fi:
1
8. După încheierea corpului procedurii, utilizează sintaxa $$ pentru a încheia procedura. De
exemplu:
END $$
Acestea sunt pașii de bază pentru a scrie o procedură în MySQL, care să includă variabile și
blocul de tratare a erorilor pentru a scrie în loguri și a face rollback la tranzacție.
DELIMITER $$
START TRANSACTION;
COMMIT;
END $$
DELIMITER ;
2
În MySQL, dacă nu există un bloc de captură a erorilor într-o procedură și apare o eroare în
cadrul unei tranzacții, tranzacția nu va fi automat anulată (rollback) în mod implicit.
Fără un bloc de tratare a erorilor adecvat, tranzacția va continua să ruleze până la finalizare.
Orice modificări efectuate în cadrul tranzacției, până în momentul în care a apărut eroarea, vor
rămâne permanente în baza de date.
De exemplu, poți adăuga un bloc de tratare a erorilor în procedură folosind sintaxa DECLARE ...
HANDLER după cum urmează:
Acest bloc de tratare a erorilor va captura orice excepții de tip SQLEXCEPTION și va rula
acțiunile specificate în cadrul lui, inclusiv instrucțiunea ROLLBACK pentru a face rollback la
tranzacție în caz de eroare.
Funcțiile suportă gestionarea excepțiilor (exception handlers), dar asta nu va prinde neapărat o
operațiune invalida. Acest lucru este suportat doar în procedurile stocate (stored procedures),
nu în funcții sau trigger-e.
Începând cu versiunea MySQL 8.0, funcțiile definite de utilizator în MySQL nu pot avea un bloc
de tratare a erorilor sau un mecanism de rollback similar procedurilor stocate.
Funcțiile în MySQL au un comportament diferit față de procedurile stocate. Ele sunt concepute
pentru a returna o valoare în funcție de parametrii de intrare și nu permit modificări ale datelor
din baza de date. Din acest motiv, blocurile de tratare a erorilor și rollback-urile nu sunt permise
în funcțiile MySQL.
În cazul în care întâmpini o eroare în cadrul unei funcții, aceasta va produce o excepție și va
întrerupe execuția funcției, returnând rezultatul erorii respective către apelatorul funcției.
3
În MySQL, funcțiile definite de utilizator pot fi utilizate pentru a efectua operații de citire
(SELECT) asupra datelor, dar nu pot fi utilizate pentru a efectua modificări ale datelor prin
instrucțiuni precum INSERT, UPDATE sau DELETE.
Funcțiile în MySQL sunt concepute pentru a returna o valoare și sunt utilizate în expresii,
interogări și alte operații de citire. Ele nu au permisiunea de a modifica datele din baza de date.
Dacă dorești să efectuezi operații de modificare a datelor (INSERT, UPDATE, DELETE), trebuie să
folosești proceduri stocate în loc de funcții. Procedurile stocate permit executarea acestor
instrucțiuni și pot fi utilizate pentru a modifica datele din baza de date.
Decizia de a utiliza funcții sau proceduri depinde de necesitățile și cerințele specifice ale
aplicației tale. Dacă trebuie să efectuezi modificări ale datelor, procedurile stocate ar fi mai
potrivite, în timp ce funcțiile sunt mai potrivite pentru operații de citire și calcul.
"Funcțiile (functions) și vizualizările (views) sunt două concepte diferite în MySQL și servesc
scopuri diferite:
Funcțiile:
Funcțiile sunt obiecte de bază în MySQL, care acceptă un set de parametri și returnează
o valoare bazată pe acei parametri.
Ele pot fi utilizate în expresii, interogări și alte operații de citire pentru a calcula și
returna valori.
Funcțiile pot fi definite de utilizator (user-defined functions) sau pot fi funcții predefinite
(built-in functions) oferite de MySQL.
Funcțiile definite de utilizator pot fi scrise în limbajul de programare procedural MySQL
(cum ar fi SQL sau SQL:2003) sau pot fi funcții definite într-un limbaj extern, cum ar fi
JavaScript sau C++.
Vizualizările:
Vizualizările reprezintă reprezentări virtuale ale datelor existente într-o bază de date.
Acestea sunt rezultatele unei interogări salvate sub forma unui obiect în baza de date.
O vizualizare este o interogare predefinită care poate fi tratată ca o tabelă virtuală,
permițând accesul ușor la datele relevante.
Vizualizările sunt create prin definirea unei interogări SELECT și salvarea acelei interogări
sub forma unei vizualizări în baza de date.
Atunci când accesezi o vizualizare, interogarea asociată cu vizualizarea este executată și
rezultatul este returnat ca o "tabelă virtuală" pentru interogările ulterioare.
4
În rezumat, funcțiile sunt utilizate pentru a calcula și returna valori bazate pe parametrii
furnizați, în timp ce vizualizările sunt utilizate pentru a crea o interfață simplificată și predefinită
pentru accesul la datele existente într-o bază de date."
Reteta functie
În MySQL, poți crea o funcție definită de utilizator folosind sintaxa CREATE FUNCTION.
Iată un exemplu de funcție simplă care adună două numere și returnează rezultatul:
SET suma = 0;
SET numar_parametri = 0;
5
WHILE numar_parametri < ? DO
SET suma = suma + ?;
SET numar_parametri = numar_parametri + 1;
END WHILE;
-- Calculăm media
SET rezultat = suma / numar_parametri;
RETURN rezultat;
END;
În exemplul de mai sus, am folosit "..." pentru a indica că funcția acceptă un număr
variabil de parametri.
Am declarat variabilele necesare pentru a efectua calculele și am utilizat o buclă WHILE
pentru a itera prin toți parametrii și a aduna valorile în variabila "suma".
La final, am împărțit suma la numărul de parametri pentru a calcula media aritmetică și
am returnat rezultatul.
Apelul funcției "media_aritmetica" (funcție cu mai mulți parametri):
Operatorul "..." permite funcției să accepte un număr variabil de argumente. În acest caz,
folosirea "..." înseamnă că funcția "media_aritmetica" poate primi unul sau mai mulți
parametri, fără a specifica numărul exact de parametri în avans.
Atunci când folosești "..." în declarația funcției, trebuie să utilizezi un mecanism suplimentar
pentru a itera prin aceste argumente în interiorul corpului funcției, deoarece nu ai acces direct
la fiecare parametru individual. În exemplul anterior, am folosit o buclă "WHILE" pentru a itera
prin numărul variabil de parametri.
Astfel, operatorul "..." permite definirea funcțiilor care acceptă un număr flexibil de argumente
în MySQL, permițând astfel utilizarea funcției cu diferite numere de parametri în apelurile
ulterioare.
6
Reteta view-uri
Un view în MySQL este o interogare stocată sub formă de tabel virtual. Poți utiliza view-urile pentru a
extrage și a manipula datele din tabele existente, oferindu-ți astfel o modalitate mai simplă și mai
eficientă de a obține informațiile de care ai nevoie. Să trecem la structura componentelor codului pentru
a crea un view.
Apelarea view-ului:
Select * my_summary_view;
Această interogare va afișa rezultatele vizualizării, care vor fi similare cu conținutul tabelei pe
care ați bazat vizualizarea.
7
Vizualizările pot fi utilizate în interogări complexe, alături de alte tabele sau vizualizări, pentru a
obține rezultate dorite.