MySQL betingede lagrede prosedyrer IF - CASE

Innholdsfortegnelse
HVIS betinget lagrede prosedyrer
Vi vil lage en database og en tabell med kommentarer som brukerne kommer med, de kan være artikler, innlegg eller hva vi vil.
LAG TABELL `kommentarer` (
`commentid` int (11) DEFAULT NULL,
`date` date DEFAULT NULL,
`userid` int (50) DEFAULT NULL,
`kommentar` tekst,
Primærnøkkel (`forekomstid`)
) MOTOR = MyISAM DEFAULT CHARSET = latin1;
Vi skal lage en lagret prosedyre som teller antall kommentarer som en bruker har igjen og returnerer nivået som brukeren er på, med referanse til eksemplet.
Ekspert hvis du har kommet med mer enn 5000 kommentarer
Avansert hvis du har kommentert mellom 4999 og 1000 ganger
Moderator hvis du har kommentert mellom 999 og 500 ganger
Redaktør hvis du har kommentert mellom 499 og 100 ganger
Vi oppretter den lagrede prosedyren, og den vil ha to parametere, hvorav den ene vil angi ID -en eller nummeret til brukeren hvis variabel er p_usuario og en annen utgang som vil være nivået med variabelen p_level.

Vi forklarer den lagrede prosedyren vi kaller det, vi antar et userid = 112
RING brukernivå (112)
Den velger og teller antall kommentarer for denne brukeren og lagrer den i den totale variabelen, deretter vil if -strukturen tildele nivået til variabelen p_level, og den vil returnere verdien.
<? // Vi utarbeider en forespørsel fra php
$ result = $ mysqli-> query ("CALL userlevel (112)");
$ rad = $ resultat-> fetch_assoc ();
ekko 'Nivå:'. $ rad ['p_nivå']; ?> var13 ->

CASE betingede lagrede prosedyrer
Operasjonen er veldig lik den forrige, bare at betingelsen er CASE, og i dette eksemplet får vi fraktkostnaden eller tilleggsavgif.webpten i henhold til kundens beliggenhet.

Vi antar et cityid = 2 og kaller den lagrede prosedyren s
RING fraktkostnad (2)
<? // Vi utarbeider en forespørsel fra php
$ result = $ mysqli-> query ("CALL shipping cost (2)");
$ rad = $ resultat-> fetch_assoc ();
ekko 'Tillegg for frakt'. $ rad ['p_recargo']; ?> var13 ->

Også innenfor mulighetene som tilbys av betingede strukturer, kan vi bruke if eller case -strukturer til å utføre flere handlinger med en enkelt lagret prosedyre
Vi vil for eksempel opprette en lagret prosedyre for å administrere produkter som vi ved å sende en parameter kan bestemme hvilken handling eller oppgave vi skal utføre.

Vi kan se at vi i produktprosedyren har en parameter som heter p_accion, så vi tildeler om handlingen vil være å lagre et nytt produkt eller endre det i databasen
Eksempel på å sette inn et nytt produkt
<? // Vi utarbeider en forespørsel fra php
$ result = $ mysqli-> query ("CALL products (10, 'Mobiltelefon', '100,00', 'ny')");
ekko 'Produktet er registrert'; ?> var13 ->

Eksempel på å sette inn en redigering eller modifisering av et produkt
<? // Vi utarbeider en forespørsel fra php
$ result = $ mysqli-> query ("CALL products (10, 'MXC3 mobiltelefon', '120,00', 'rediger')");
ekko 'Produktet er endret'; ?> var13 ->

Denne metoden er veldig nyttig for å gruppere oppgaver kjent som CRUD, det vil si å lage, lese, redigere og slette data og utføre oppdateringer og søk, alt bestilt i samme fil, og dermed lette vedlikehold og muligheten til å skalere databasen om nødvendig..
I tillegg lar den fra funksjonsanalysens synspunkt være mer tydelig om forretningsreglene for applikasjonen.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave