Erstellen Sie intelligente gespeicherte Prozeduren
Alle bisher verwendeten gespeicherten Prozeduren kapseln im Wesentlichen die einfache SELECT-Anweisung von MySQL. Obwohl sie alle gültige Beispiele für gespeicherte Prozeduren sind, machen sie Dinge, die Sie direkt mit diesen gekapselten Anweisungen tun könnten (wenn sie noch mehr bringen, machen sie die Sache komplizierter). Die Leistungsfähigkeit gespeicherter Prozeduren wird erst dann wirklich deutlich, wenn sie Geschäftsregeln und intelligente Verarbeitung beinhalten.
Stellen Sie sich dieses Szenario vor. Sie benötigen die gleiche Bestellsumme wie zuvor, müssen jedoch die Umsatzsteuer zur Gesamtsumme hinzufügen, allerdings nur für bestimmte Kunden (vielleicht diejenigen in Ihrem Bundesstaat). Dann müssen Sie die folgenden Dinge tun:
1. Ermitteln Sie die Gesamtsumme (wie zuvor);
3 .Gibt den Gesamtbetrag zurück (mit oder ohne Steuer).
Die vollständige Arbeit der gespeicherten Prozedur ist wie folgt:
Eingabe:
Analyse: Diese gespeicherte Prozedur weist viele Änderungen auf. Fügen Sie zunächst einen Kommentar hinzu (Platzierung: vorne). Dies ist besonders wichtig, da die Komplexität gespeicherter Prozeduren zunimmt. Es wurde ein zusätzlicher Parameter taxable hinzugefügt, der ein boolescher Wert ist (true, wenn die Steuer erhöht werden soll, andernfalls false). Im Hauptteil der gespeicherten Prozedur werden zwei lokale Variablen mithilfe der DECLARE-Anweisung definiert. DECLARE erfordert die Angabe eines Variablennamens und eines Datentyps und unterstützt auch optionale Standardwerte (der Standardwert für den Steuersatz ist in diesem Beispiel auf 6 % festgelegt). Die SELECT-Anweisung wurde geändert, sodass ihr Ergebnis in total (einer lokalen Variablen) statt in ototal gespeichert wird. Die IF-Anweisung prüft, ob taxable wahr ist, und verwendet in diesem Fall eine weitere SELECT-Anweisung, um die Umsatzsteuer zur lokalen Variablensumme hinzuzufügen. Verwenden Sie abschließend eine weitere SELECT-Anweisung, um total (wodurch sich die Umsatzsteuer erhöhen kann oder auch nicht) in ototal zu speichern.-- Name:ordertotal -- Parmeters:onumber = order number -- taxable = 0 if not taxable -- ototal = order total variable create procedure ordretotal( in onumber int, in taxable boolean, out ototal decimal(8,2) )comment 'obtain order total,optiomally adding tax' begin -- dexlare variable for total declare total decimal(8,2); -- delcare tax percentage declare taxtate int default 6; -- get the ordertotal select sum(item_price*quantity) from orderitems where order_num = onumber into total; -- is this taxable? if taxable then -- yes,so add taxrate to the total select total+(total/100*taxrate) into total; end if; -- and finally,save to out variable select total into ototal; end;
COMMENT-Schlüsselwort Die gespeicherte Prozedur in diesem Beispiel enthält einen COMMENT-Wert in der CREATE PROCEDURE-Anweisung. Es ist nicht erforderlich, wird aber, wenn angegeben, in den Ergebnissen von SHOW PROCEDURE STATUS angezeigt. Dies ist offensichtlich eine fortschrittlichere und leistungsfähigere gespeicherte Prozedur. Um es zu testen, verwenden Sie die folgenden zwei Anweisungen:
Eingabe:
Ausgabe:call ordertotal(20005,0,@total); select @total;
Eingabe:
Ausgabe:call ordertotal(20005,1,@total); select @total;
Analyse: Der als 1 angegebene BOOLEAN-Wert bedeutet wahr, der als 0 angegebene Wert bedeutet falsch (tatsächlich werden Werte ungleich Null als wahr angesehen , Nur 0 wird als falsch angesehen). Die Umsatzsteuer kann bedingt zur Bestellsumme addiert werden, indem für das mittlere Argument 0 oder 1 angegeben wird.
IF-Anweisung Dieses Beispiel zeigt die grundlegende Verwendung der IF-Anweisung von MySQL. Die IF-Anweisung unterstützt auch ELSEIF- und ELSE-Klauseln (erstere verwendet auch eine THEN-Klausel, letztere nicht). Wir werden in zukünftigen Kapiteln weitere Verwendungsmöglichkeiten von IF (und anderen Flusskontrollanweisungen) sehen.
Um die CREATE-Anweisung anzuzeigen, die zum Erstellen einer gespeicherten Prozedur verwendet wird, verwenden Sie SHOW CREATE
PROCEDURE-Anweisung:
Eingabe:
Um eine Liste der gespeicherten Prozeduren mit Details zu erhalten, z. B. wann und von wem sie erstellt wurden, verwenden Sie SHOW PROCEDURE STATUS .show create procedure ordetotal;
Prozessstatusergebnisse begrenzen PROZEDURSTATUS ANZEIGEN Listet alle gespeicherten Prozeduren auf. Um die Ausgabe einzuschränken, können Sie mit LIKE ein Filtermuster angeben, zum Beispiel:
show procedure status like 'ordertotal';
Das obige ist der detaillierte Inhalt vonGespeicherte MySQL-Prozeduren – Erstellen Sie intelligente gespeicherte Prozeduren und überprüfen Sie gespeicherte Prozeduren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!