MySQL betingede lagrede procedurer IF - CASE

Indholdsfortegnelse
HVIS betingede lagrede procedurer
Vi opretter en database og en tabel med kommentarer, som brugerne laver, de kan være artikler, indlæg eller hvad vi nu vil.
Opret tabel `kommentarer` (
`commentid` int (11) DEFAULT NULL,
`dato` dato STANDARD NULL,
`userid` int (50) DEFAULT NULL,
`kommentar` tekst,
PRIMÆR NØGLE (`forekomstid`)
) MOTOR = MyISAM DEFAULT CHARSET = latin1;
Vi skal oprette en lagret procedure, der tæller antallet af kommentarer, som en bruger har efterladt og returnerer det niveau, som brugeren er på, med reference til eksemplet.
Ekspert hvis du har skrevet mere end 5000 kommentarer
Fremskreden hvis du har kommenteret mellem 4999 og 1000 gange
Moderator hvis du har kommenteret mellem 999 og 500 gange
Redaktør hvis du har kommenteret mellem 499 og 100 gange
Vi opretter den lagrede procedure, og den vil have to parametre, hvoraf den ene vil blive indtastet id eller nummer for den bruger, hvis variabel er p_usuario og en anden output, som vil være niveauet med variablen p_level.

Vi forklarer den lagrede procedure, vi kalder det, vi antager et userid = 112
RING brugerniveau (112)
Den vælger og tæller antallet af kommentarer for denne bruger og gemmer den i den totale variabel, derefter vil if -strukturen tildele niveauet til variablen p_level, og den returnerer værdien.
<? // Vi forbereder en forespørgsel fra php
$ resultat = $ mysqli-> forespørgsel ("CALL userlevel (112)");
$ række = $ resultat-> fetch_assoc ();
ekko 'Niveau:'. $ række ['p_niveau']; ?> var13 ->

CASE betingede lagrede procedurer
Operationen ligner meget den forrige, kun at betingelsen er CASE, og i dette eksempel får vi omkostninger til forsendelse eller tillæg i henhold til kundens placering.

Vi antager et cityid = 2 og kalder den lagrede procedure s
RING forsendelsesomkostninger (2)
<? // Vi udarbejder en forespørgsel fra php
$ resultat = $ mysqli-> forespørgsel ("CALL shipping cost (2)");
$ række = $ resultat-> fetch_assoc ();
ekko 'Tillæg for forsendelse'. $ row ['p_recargo']; ?> var13 ->

Også inden for de muligheder, der tilbydes af betingede strukturer, kan vi bruge if- eller case -strukturer til at udføre flere handlinger med en enkelt lagret procedure
Vi opretter f.eks. En lagret procedure til styring af produkter, som vi ved at sende en parameter derefter kan bestemme, hvilken handling eller opgave vi skal udføre.

Vi kan se, at vi i produktproceduren har en parameter kaldet p_accion, så vi tildeler, om handlingen vil være at gemme et nyt produkt eller ændre det i databasen
Eksempel på at indsætte et nyt produkt
<? // Vi udarbejder en forespørgsel fra php
$ resultat = $ mysqli-> forespørgsel ("CALL products (10, 'Mobiltelefon', '100,00', 'ny')");
ekko 'Produktet er registreret'; ?> var13 ->

Eksempel på indsættelse af en redigering eller ændring af et produkt
<? // Vi udarbejder en forespørgsel fra php
$ resultat = $ mysqli-> forespørgsel ("CALL products (10, 'MXC3 mobiltelefon', '120,00', 'rediger')");
ekko 'Produktet er blevet ændret'; ?> var13 ->

Denne metode er meget nyttig til gruppering af opgaver kendt som CRUD, det vil sige oprettelse, læsning, redigering og sletning af data og udførelse af opdateringer og søgninger, alt bestilt i den samme fil, hvilket letter vedligeholdelse og muligheden for at skalere databasen, hvis det er nødvendigt..
Derudover tillader det set fra funktionsanalysens synspunkt at være mere tydelig omkring applikationens forretningsregler.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
wave wave wave wave wave