Gespeicherte Prozeduren löschen
Nachdem eine gespeicherte Prozedur erstellt wurde, wird sie zur Verwendung auf dem Server gespeichert, bis sie gelöscht wird. Der Löschbefehl (ähnlich der in Kapitel 21 eingeführten Anweisung) löscht die gespeicherte Prozedur vom Server. Um die neu erstellte gespeicherte Prozedur zu löschen, können Sie die folgende Anweisung verwenden:
Eingabe:
drop procedure productpricing;
Analyse: Diese Anweisung löscht die neu erstellte gespeicherte Prozedur. Bitte beachten Sie, dass das folgende () nicht verwendet wird, sondern nur der Name der gespeicherten Prozedur angegeben wird.
Nur löschen, wenn vorhanden. Wenn die angegebene Prozedur nicht vorhanden ist, generiert DROP PROCEDURE einen Fehler. Verwenden Sie DROP PROCEDURE IF EXISTS, wenn eine Prozedur vorhanden ist und Sie sie löschen möchten (ohne einen Fehler zu generieren, wenn die Prozedur nicht vorhanden ist).
Verwenden von Parametern
productpricing ist nur eine einfache gespeicherte Prozedur, die einfach das Ergebnis der SELECT-Anweisung anzeigt. Im Allgemeinen zeigen gespeicherte Prozeduren die Ergebnisse nicht an, sondern geben die Ergebnisse an die von Ihnen angegebenen Variablen zurück.
Variable Ein bestimmter Ort im Speicher, der zum vorübergehenden Speichern von Daten verwendet wird. Das Folgende ist eine modifizierte Version von ProductPricing (Sie können diese gespeicherte Prozedur nicht erneut erstellen, ohne sie zuerst zu löschen):
Eingabe:
create procedure productpricing( out pl decimal(8,2), out ph decimal(8,2), out pa decimal(8,2) ) begin select min(prod_price) into pl from products; select max(prod_price) into ph from products; select avg(prod_price) into pa from products; end;
Analyse: Diese gespeicherte Prozedur akzeptiert 3 Parameter: pl The niedrigster Preis für Speicherprodukte, ph der höchste Preis für Speicherprodukte und pa der durchschnittliche Preis für Speicherprodukte. Jeder Parameter muss den angegebenen Typ haben, hier werden Dezimalwerte verwendet. Das Schlüsselwort OUT gibt an, dass der entsprechende Parameter verwendet wird, um einen Wert aus der gespeicherten Prozedur zu übergeben (Rückgabe an den Aufrufer). MySQL unterstützt die Parametertypen IN (an eine gespeicherte Prozedur übergeben), OUT (an eine gespeicherte Prozedur übergeben, wie hier verwendet) und INOUT (an eine gespeicherte Prozedur übergeben und aus dieser heraus übergeben). Der Code für die gespeicherte Prozedur befindet sich in den BEGIN- und END-Anweisungen, bei denen es sich, wie bereits erwähnt, um eine Reihe von SELECT-Anweisungen handelt, die Werte abrufen und diese dann in den entsprechenden Variablen speichern (durch Angabe des Schlüsselworts INTO).
Datentypen von Parametern Die für Parameter einer gespeicherten Prozedur zulässigen Datentypen sind dieselben wie die in der Tabelle verwendeten. Anhang D listet diese Typen auf.
Beachten Sie, dass Recordset kein zulässiger Typ ist und daher nicht mehrere Zeilen und Spalten über einen einzelnen Parameter zurückgegeben werden können. Aus diesem Grund verwendet das vorherige Beispiel drei Parameter (und drei SELECT-Anweisungen). Um diese geänderte gespeicherte Prozedur aufzurufen, müssen 3 Variablennamen wie folgt angegeben werden:
Eingabe:
call productpricing(@price low, @pricehigh, @priceaverage);
Analyse: Da diese gespeicherte Prozedur 3 Parameter erfordert, muss sie genau 3 übergeben Parameter, nicht mehr und nicht weniger. Diese CALL-Anweisung gibt also 3 Parameter an. Dies sind die Namen der drei Variablen, in denen die gespeicherte Prozedur die Ergebnisse speichert.
Variablenname Alle MySQL-Variablen müssen mit @ beginnen.
Beim Aufruf zeigt diese Anweisung keine Daten an. Es gibt Variablen zurück, die später angezeigt (oder in einer anderen Verarbeitung verwendet) werden können. Um den Durchschnittspreis des abgerufenen Produkts anzuzeigen, gehen Sie wie folgt vor:
Eingabe:
select @priceaverage;
Ausgabe:
Um 3 Werte zu erhalten, können Sie die folgende Anweisung verwenden:
Eingabe:
select @pricehigh,@pricrlow,@priceaverage;
Ausgabe:
Das Folgende ist ein weiteres Beispiel, dieses Mal mit IN- und OUT-Parametern. ordertotal akzeptiert die Bestellnummer
und gibt die Gesamtsumme der Bestellung zurück:
Eingabe:
create procedure ordertotal( in onumber int, out ototal decimal(8,2) ) begin select sum(item_price*quantity) from orderitems where order_num = onumber into ototal; end;
Analyse: onumber ist als IN definiert, da die Bestellnummer übergeben wird die gespeicherte Prozedur. ototal ist als OUT definiert, da die Gesamtsumme von der gespeicherten Prozedur zurückgegeben wird. Die SELECT-Anweisung verwendet diese beiden Parameter, die WHERE-Klausel verwendet onumber, um die richtige Zeile auszuwählen, und INTO verwendet ototal, um die berechnete Summe zu speichern.
Um diese neue gespeicherte Prozedur aufzurufen, können Sie die folgende Anweisung verwenden:
Eingabe:
call ordertotal(20005,@total);
Analyse: Zwei Parameter müssen an ordertotal übergeben werden; ist die Bestellnummer und der zweite Parameter ist der Name der Variablen, die die berechnete Summe enthält. Um diese Summe anzuzeigen, gehen Sie wie folgt vor:
Eingabe:
select @total;
Ausgabe:
Analysieren : @total wurde durch die CALL-Anweisung von ordertotal ausgefüllt und SELECT zeigt den darin enthaltenen Wert an. Um die Gesamtanzeige einer anderen Bestellung zu erhalten, müssen Sie die gespeicherte Prozedur erneut aufrufen und dann die Variable erneut anzeigen:
Eingabe:
call ordertotal(20009,@total); select @total;
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Löschvorgangs gespeicherter MySQL-Prozeduren und Beispiele für die Verwendung von Parametern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!