Turinys
Išsaugota procedūra (saugojimo procedūra) yra mažas algoritmas SQL kalba, kuris saugomas kartu su duomenų baze ir leidžia atlikti su šiais duomenimis susijusias užduotis.Saugomų procedūrų privalumai yra šie:
- Jie gali prieiti iš skirtingų išorinių programų, jei reikia viešinti duomenų bazės struktūrą.
- Jie gali pakartotinai naudoti todėl sutaupysime laiko, kai būsime užprogramuoti ir išbandyti.
Naudokite „mysql“ saugomas procedūras su „phpmyadmin“
Mes pradėsime kurti ir užklausti saugomas procedūras naudodami „phpmyadmin“ įrankį, tačiau gali būti naudojami visi, kurie palaiko SQL užklausas nuo MYSQL 5.0
Tokiu atveju paimsime automobilių ar transporto priemonių agentūros duomenų bazę.
1) Mes įvedame phpmyadmin ir iš ten į duomenų bazę
„Mysql“ duomenis tvarko 2 tipų varikliai
- MyISAM: numatytasis variklis, labai greitas užklausoms, nesuteikia duomenų vientisumo ar referencinės apsaugos. Ideali sistema su daugybe užklausų
- „InnoDB“: suteikia referencinę apsaugą ir duomenų vientisumą, taip pat įrašų užrakinimą, idealiai tinka, jei nuolat įterpiama, redaguojama ar ištrinama daug informacijos. Paprastai saugomoms procedūroms geriau naudoti „InnoDB“.
Skirtuke SQL sukuriame pirmąją saugomą procedūrą, skirtą užklausti transporto priemonių tipus. Parašykite mums sql teksto lauke.
CREATE PROCEDURE consult_vehicle_type () ---> procedūros pavadinimas
PASIRINKITE * FROM vehicle_type ---> SQL, kad išspręstumėte
Jei vykdysime SQL užklausą, kai bus sukurta procedūra, gausime pranešimą apie sėkmę.
Norėdami pamatyti procedūras, sukurtas naudojant skirtuką SQL, pasikonsultuojame su komanda SHOW PROCEDURE STATUS, kuri nerodys visų išsaugotų procedūrų.
Dabar parodysime, kaip atlikti išsaugotą procedūrą su komanda CALL procedros_pavadinimas (Kiekviena programavimo kalba turi savo biblioteką, kad galėtų pasiekti išsaugotą procedūrą, tačiau visos jos yra panašios.
Čia matome CALL išsaugotos procedūros pa_vehiculo_type vykdymo rezultatą, jis grąžino rezultatą ir niekas nemato, kokios komandos buvo įvykdytos.
Šiame pavyzdyje išvardinsime transporto priemones, tačiau pagal prekės ženklą procedūra būtų tokia:
KURTI PROCEDŪRĄ pa_vehiculos_por_brand (pažymėti varchar (50))
SELECT * FROM
transporto priemonės, prekės ženklai
KUR vehiculos.brand = markes.id
IR prekės ženklai.ženklas = prekės ženklas
Prie procedūros pavadinimo pridedame kintamąjį, kad galėtume ieškoti „Honda“ markės transporto priemonių pavyzdžio
Norėdami paleisti pavyzdį, iškviečiame SQL skirtuke išsaugotą procedūrą
CALL pa_vehiculos_por_marca („Honda“)
CALL pa_vehiculos_por_marca („Ford“)
Taip pat galite naudoti išsaugotas procedūras įterpdami užduotis, pvz., Procedūrą, skirtą įrašyti duomenis iš kliento
KURTI PROCEDŪRĄ pa_cliente_insertar (
vvardas VARCHAR (64),
pavardė VARCHAR (64)
)
INSERT INTO klientas (vardas, pavardė) VALUES (v vardas, pavardė);
Norėdami jį naudoti, mes jį vadiname taip
CALL pa_cliente_insertar („José“, „Gonzales“);
Kitas galėtų būti patikrinti provincijų skaičių
KURTI PROCEDŪRĄ `pa_provincias_cantidad` ()
SELECT COUNT (*) kaip provincijas iš provincijų
Norint pašalinti bet kokią procedūrą, naudojama LAŠO PROCEDŪRA procedros_pavadinimas
Skambučiai į procedūras iš skirtingų kalbų.
In PHP, darant prielaidą, kad duomenys gaunami iš formos
$ mysqli = naujas mysqli ("localhost", "root", "root");
$ mysqli-> select_db ("auto_agency");
$ mysqli-> query ("CALL pa_client_insert ('$ first name', '$ pavardė')");
Dabar mes atliekame procedūrą, saugomą „Java“ (kodas sutrumpintas)
conn = MySQL Connection.connect ("127,0,0,1", "root", "*******", "root");
CallableStatement Procedūra = conn.prepareCall ("{CALL pa_customer_insert ('$ first name', '$ pavardė'))}");
Procedūra.setString ("vname", $ name);
Procedūra.setString ("pavardė", $ pavardė);
Procedūra.execute ();
connM.commit ();
Tokiu būdu parodoma, kad tos pačios procedūros buvo naudojamos skirtingose aplinkose ir kalbomis, o vartotojui tai buvo suprantama. Procedūros tema yra plati, tačiau kiekvienas, išmanantis SQL, galės ištirti ir pasiekti puikių pasiekimų naudodami saugomas procedūras ir taip optimizuoti savo projektus laiku ir duomenų saugumu.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką