Cuprins
O procedură stocată (Store Procedure) este un mic algoritm în limbaj SQL care este stocat împreună cu baza de date și permite efectuarea de sarcini pe aceste date.Avantajele procedurilor stocate sunt:
- Ei pot a accesa din diferite programe externe, dacă este necesar să se facă publică structura bazei de date.
- Ei pot reutilizare de aceea vom economisi timp fiind deja programați și testați.
Utilizați procedurile stocate mysql, cu phpmyadmin
Vom începe activitatea de creare și interogare a procedurilor stocate cu instrumentul phpmyadmin, dar oricine acceptă interogări SQL începând cu MYSQL 5.0 poate fi folosit
În acest caz, vom prelua baza de date a unei agenții de mașini sau vehicule.
1) Intrăm phpmyadmin și de acolo la baza de date
Există 2 tipuri de motoare care gestionează datele în Mysql
- MyISAM: motorul implicit, foarte rapid pentru interogări, nu oferă integritatea datelor sau protecție referențială. Sisteme ideale cu multe interogări
- InnoDB: oferă protecție referențială și integritate a datelor, precum și blocarea înregistrărilor, ideal dacă multe informații sunt inserate, editate sau șterse în mod constant. În general, pentru procedurile stocate, este mai bine să utilizați InnoDB.
În fila SQL creăm prima noastră procedură stocată pentru a interoga tipurile de vehicule. Scrieți-ne în câmpul text al sql.
CREAȚI PROCEDURA consult_vehicle_type () ---> numele procedurii
SELECT * FROM vehicle_type ---> SQL de rezolvat
Dacă executăm interogarea SQL, vom primi un mesaj de succes la crearea procedurii.
Pentru a vedea procedurile create din fila SQL, consultăm comanda SHOW PROCEDURE STATUS, care nu va afișa toate procedurile stocate.
Acum vom arăta cum să executăm procedura stocată cu comanda CALL nume_procedură (Fiecare limbaj de programare are propria bibliotecă pentru a accesa o procedură stocată, dar toate sunt similare.
Aici putem vedea rezultatul executării procedurii stocate CALL pa_vehiculo_type, a returnat rezultatul și nimeni nu vede ce comenzi au fost executate.
În exemplul următor vom enumera vehiculele, dar după marcă, procedura ar fi:
CREAȚI PROCEDURA pa_vehiculos_por_brand (marca varchar (50))
ALEGE DIN
vehicule, mărci
UNDE vehiculos.brand = marks.id
ȘI mărci.brand = brand
La numele procedurii adăugăm o variabilă pentru a putea căuta un exemplu de vehicule marca Honda
Pentru a rula exemplul, numim procedura stocată într-o filă SQL
CALL pa_vehiculos_por_marca („Honda”)
CALL pa_vehiculos_por_marca („Ford”)
De asemenea, puteți utiliza procedurile stocate pentru a insera sarcini, de exemplu o procedură pentru a înregistra date de la un client
CREAȚI PROCEDURA pa_cliente_insertar (
vname VARCHAR (64),
prenumele VARCHAR (64)
)
INSERT INTO client (nume, prenume) VALORI (vname, prenume);
Pentru a-l utiliza, îl numim după cum urmează
CALL pa_cliente_insertar („José”, „Gonzales”);
Un alt ar putea fi Verificați numărul de provincii
CREAȚI PROCEDURA `pa_provincias_cantidad` ()
SELECTAȚI COUNT (*) ca provincii DIN provincii
Pentru a elimina orice procedură este utilizată PROCEDURA DE DROP nume_procedură
Apeluri la proceduri din diferite limbi.
În PHP, presupunând că datele provin dintr-un formular
$ mysqli = mysqli nou ("localhost", "root", "root");
$ mysqli-> select_db ("auto_agency");
$ mysqli-> interogare ("CALL pa_client_insert ('$ prenume', '$ prenume')");
Acum executăm procedura stocată în Java (codul a fost scurtat)
conn = MySQL Connection.connect ("127,0,0,1", "root", "*******", "root");
CallableStatement Procedure = conn.prepareCall ("{CALL pa_customer_insert ('$ prenume', '$ prenume'))}");
Procedure.setString ("vname", $ nume);
Procedure.setString („prenume”, $ prenume);
Procedure.execute ();
connM.commit ();
În acest mod se arată că aceleași proceduri au fost utilizate în medii și limbi diferite, într-un mod transparent pentru utilizator. Subiectul procedurii este extins, dar oricine are cunoștințe de SQL va fi capabil să investigheze și să obțină mari realizări cu ajutorul procedurilor stocate, putând astfel să-și optimizeze proiectele în timp și securitatea datelor.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv