MySQL villkorliga lagrade förfaranden IF - CASE

Innehållsförteckning
OM villkorliga lagrade procedurer
Vi kommer att skapa en databas och en tabell med kommentarer som användare gör, de kan vara artiklar, inlägg eller vad vi vill.
SKAPA TABELL `kommentarer` (
`commentid` int (11) DEFAULT NULL,
`date` date DEFAULT NULL,
`userid` int (50) DEFAULT NULL,
`kommentar` text,
PRIMÄR KEY ('förekomstid')
) MOTOR = MyISAM DEFAULT CHARSET = latin1;
Vi kommer att skapa en lagrad procedur som räknar antalet kommentarer som en användare har kvar och returnerar nivån på vilken användare är, med referens för exemplet.
Expert om du har gjort mer än 5000 kommentarer
Avancerad om du har kommenterat mellan 4999 och 1000 gånger
Moderator om du har kommenterat mellan 999 och 500 gånger
Redaktör om du har kommenterat mellan 499 och 100 gånger
Vi skapar det lagrade förfarandet och det kommer att ha två parametrar, varav en kommer att mata in id eller nummer för användaren vars variabel är p_usuario och en annan utmatning som blir nivån med variabeln p_nivå.

Vi förklarar det lagrade förfarandet vi kallar det, vi antar ett userid = 112
CALL användarnivå (112)
Den väljer och räknar antalet kommentarer för den här användaren och lagrar den i totalvariabeln, sedan kommer if -strukturen att tilldela variabeln p_level nivån och det returnerar värdet.
<? // Vi förbereder en fråga från php
$ resultat = $ mysqli-> fråga ("CALL userlevel (112)");
$ rad = $ resultat-> fetch_assoc ();
eko 'Nivå:'. $ rad ['p_nivå']; ?> var13 ->

CASE villkorliga lagrade procedurer
Operationen är mycket lik den föregående, bara att villkoret är CASE och i detta exempel får vi fraktkostnaden eller tilläggsavgif.webpten beroende på kundens plats.

Vi antar en cityid = 2 och anropar den lagrade proceduren p
RING fraktkostnad (2)
<? // Vi förbereder en fråga från php
$ resultat = $ mysqli-> fråga ("CALL shipping shipping cost (2)");
$ rad = $ resultat-> fetch_assoc ();
echo 'Tillägg för frakt'. $ rad ['p_recargo']; ?> var13 ->

Även inom de möjligheter som villkorade strukturer erbjuder kan vi använda if- eller case -strukturerna för att utföra flera åtgärder med en enda lagrad procedur
Vi kommer till exempel att skapa en lagrad procedur för att hantera produkter som vi genom att skicka en parameter kan bestämma vilken åtgärd eller uppgif.webpt vi ska utföra.

Vi kan se att vi i produktproceduren har en parameter som heter p_accion, så vi tilldelar om åtgärden kommer att vara att spara en ny produkt eller ändra den i databasen
Exempel på att sätta in en ny produkt
<? // Vi förbereder en fråga från php
$ resultat = $ mysqli-> fråga ("CALL products (10, 'Mobiltelefon', '100,00', 'ny')");
eko "Produkten har registrerats"; ?> var13 ->

Exempel för att infoga en redigering eller ändra en produkt
<? // Vi förbereder en fråga från php
$ resultat = $ mysqli-> fråga ("CALL products (10, 'MXC3 mobiltelefon', '120,00', 'redigera')");
echo 'Produkten har modifierats'; ?> var13 ->

Denna metod är mycket användbar för att gruppera uppgif.webpter som kallas CRUD, det vill säga skapa, läsa, redigera och ta bort data och utföra uppdateringar och sökningar, alla ordnade i samma fil, vilket underlättar underhåll och möjligheten att skala databasen vid behov..
Dessutom tillåter det ur funktionsanalyssynpunkt att bli tydligare om tillämpningsreglerna för applikationen.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave