Indholdsfortegnelse
En lagret procedure (Store Procedure) er en lille algoritme i SQL -sprog, der lagres sammen med databasen og gør det muligt at udføre opgaver på disse data.Fordelene ved lagrede procedurer er:
- Det kan de adgang fra forskellige eksterne programmer, hvis det er nødvendigt at offentliggøre databasestrukturen.
- Det kan de genbruge derfor sparer vi tid ved allerede at være programmeret og testet.
Brug mysql -lagrede procedurer med phpmyadmin
Vi starter arbejdet med at oprette og forespørge lagrede procedurer med phpmyadmin -værktøjet, men alle, der understøtter SQL -forespørgsler fra MYSQL 5.0, kan bruges
I dette tilfælde tager vi databasen over en bil eller et bilagentur.
1) Vi indtaster phpmyadmin og derfra til databasen
Der er 2 typer motorer, der håndterer data i Mysql
- MyISAM: standardmotor, meget hurtig til forespørgsler, giver ikke dataintegritet eller referencebeskyttelse. Ideelle systemer med mange forespørgsler
- InnoDB: giver referencebeskyttelse og dataintegritet samt registreringslås, ideel hvis der konstant indsættes, redigeres eller slettes mange oplysninger. Generelt for lagrede procedurer er det bedre at bruge InnoDB.
I fanen SQL opretter vi vores første lagrede procedure til forespørgsel på køretøjstyperne. Skriv os i tekstfeltet i sql.
OPRET PROCEDURE consult_vehicle_type () ---> procedurnavn
VÆLG * FRA køretøjstype ---> SQL for at løse
Hvis vi udfører SQL -forespørgslen, modtager vi en succesmeddelelse, når proceduren oprettes.
For at se de procedurer, der er oprettet fra fanen SQL, konsulterer vi kommandoen VIS PROCEDURE STATUS, som ikke viser alle de lagrede procedurer.
Nu viser vi, hvordan du udfører den lagrede procedure med kommandoen CALL procedure_name (Hvert programmeringssprog har sit eget bibliotek for at få adgang til en lagret procedure, men de er alle ens.
Her kan vi se resultatet af udførelsen af den CALL -lagrede procedure pa_vehiculo_type, det returnerede resultatet, og ingen ser, hvilke kommandoer der er blevet udført.
I det følgende eksempel vil vi liste køretøjer, men efter mærke vil proceduren være:
OPRET PROCEDURE pa_vehiculos_por_brand (mark varchar (50))
VÆLG * FRA
køretøjer, mærker
HVOR vehiculos.brand = marks.id
OG brands.brand = mærke
Til navnet på proceduren tilføjer vi en variabel for at kunne søge efter et eksempel på biler fra Honda -mærker
For at køre eksemplet kalder vi den lagrede procedure i en SQL -fane
RING pa_vehiculos_por_marca (“Honda”)
RING pa_vehiculos_por_marca (“Ford”)
Du kan også bruge de lagrede procedurer til indsættelse af opgaver, f.eks. En procedure til at registrere data fra en kunde
OPRET PROCEDURE pa_cliente_insertar (
vname VARCHAR (64),
efternavn VARCHAR (64)
)
INDsæt i klient (navn, efternavn) VÆRDIER (vnavn, efternavn);
For at bruge det kalder vi det som følger
RING pa_cliente_insertar ('José', 'Gonzales');
En anden kan være Kontroller antal provinser
OPRET PROCEDURE `pa_provincias_cantidad` ()
VÆLG TÆLL (*) som provinser FRA provinser
For at fjerne enhver procedure bruges FALDEPROCEDURE procedure_navn
Opkald til procedurer fra forskellige sprog.
I PHP, forudsat at dataene kommer fra en formular
$ mysqli = ny mysqli ("localhost", "root", "root");
$ mysqli-> select_db ("auto_agency");
$ mysqli-> forespørgsel ("CALL pa_client_insert ('$ fornavn', '$ efternavn')");
Nu udfører vi den procedure, der er gemt i Java (koden er blevet forkortet)
conn = MySQL Connection.connect ("127,0,0,1", "root", "*******", "root");
CallableStatement Procedure = conn.prepareCall ("{CALL pa_customer_insert ('$ fornavn', '$ efternavn'))}");
Procedure.setString ("vname", $ name);
Procedure.setString ("efternavn", $ efternavn);
Procedure.execute ();
connM.commit ();
På denne måde er det vist, at de samme procedurer er blevet brugt i forskellige miljøer og sprog på en gennemsigtig måde for brugeren. Proceduremnet er omfattende, men alle med kendskab til SQL vil være i stand til at undersøge og opnå store præstationer ved brug af lagrede procedurer og dermed kunne optimere deres projekter i tide og datasikkerhed.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt