Einfaches Schreiben von gespeicherten MySQL-Prozeduren und -Funktionen

Einfaches Schreiben von gespeicherten MySQL-Prozeduren und -Funktionen

Was ist eine gespeicherte Prozedur?

Einfach ausgedrückt handelt es sich um eine Reihe leistungsstarker SQL-Anweisungen, die einige relativ komplexe logische Funktionen implementieren können, ähnlich den Methoden in der JAVA-Sprache.

PS: Gespeicherte Prozeduren sind Triggern etwas ähnlich, beide sind eine Reihe von SQL-Sets, aber gespeicherte Prozeduren werden aktiv aufgerufen und sind leistungsfähiger als Trigger. Trigger werden automatisch aufgerufen, nachdem etwas ausgelöst wurde;

Was sind die Eigenschaften

Es gibt Eingabe- und Ausgabeparameter, Variablen können deklariert werden und es gibt Steueranweisungen wie if/else, case, while usw. Durch das Schreiben gespeicherter Prozeduren können komplexe logische Funktionen implementiert werden.

Gemeinsame Merkmale von Funktionen: Modularität, Kapselung und Code-Wiederverwendung;

Schnelle Geschwindigkeit, nur die erste Ausführung muss die Kompilierungs- und Optimierungsschritte durchlaufen und nachfolgende Aufrufe können direkt ausgeführt werden, wodurch die oben genannten Schritte entfallen.

Erstellen einer gespeicherten MySQL-Prozedur

Grammatik

CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [merkmal ...] routine_body

CREATE PROCEDURE Prozedurname([[IN|OUT|INOUT] Parametername Datentyp[,[IN|OUT|INOUT] Parametername Datentyp…]]) [Eigenschaften…] Prozedurkörper

TRENNUNGSZEICHEN //
 PROZEDUR ERSTELLEN myproc(OUT s int)
  BEGINNEN
   Wählen Sie COUNT(*) INTO s FROM Studenten;
  ENDE
  //
TRENNUNGSZEICHEN ;

Trennzeichen

MySQL verwendet standardmäßig ";" als Trennzeichen. Wenn kein Trennzeichen deklariert ist, behandelt der Compiler die gespeicherte Prozedur als SQL-Anweisung, sodass der Kompilierungsprozess einen Fehler meldet. Daher müssen Sie "DELIMITER //" verwenden, um das Trennzeichen für das aktuelle Segment im Voraus zu deklarieren, damit der Compiler den Inhalt zwischen den beiden "//" als Code der gespeicherten Prozedur behandelt und diesen Code nicht ausführt; "DELIMITER ;" bedeutet, das Trennzeichen wiederherzustellen.

Parameter

Eine gespeicherte Prozedur kann nach Bedarf Eingabe-, Ausgabe- und Eingabe-/Ausgabeparameter haben. Wenn mehrere Parameter vorhanden sind, trennen Sie diese durch ",". MySQL-Stored-Procedure-Parameter werden bei der Definition von Stored Procedures verwendet. Es gibt drei Typen von Parametern: IN, OUT und INOUT:

  • Der Wert des IN-Parameters muss beim Aufruf der gespeicherten Prozedur angegeben werden. Der Wert des Parameters kann nicht zurückgegeben werden, wenn er während der gespeicherten Prozedur geändert wird. Dies ist der Standardwert.
  • OUT: Der Wert kann innerhalb der gespeicherten Prozedur geändert und zurückgegeben werden
  • INOUT: Wird beim Aufruf angegeben und kann geändert und zurückgegeben werden

Unter diesen ist der Parameter sp_name der Name der gespeicherten Prozedur; proc_parameter stellt die Parameterliste der gespeicherten Prozedur dar; der Parameter characteristics gibt die Merkmale der gespeicherten Prozedur an; der Parameter routine_body ist der Inhalt des SQL-Codes und BEGIN…END kann verwendet werden, um den Anfang und das Ende des SQL-Codes zu markieren.

Jeder Parameter in proc_parameter besteht aus 3 Teilen. Diese drei Teile sind Eingabe- und Ausgabetypen, Parameternamen und Parametertypen. Seine Form ist wie folgt:

[ IN | OUT | INOUT ] Parametername Typ

Dabei steht IN für Eingabeparameter; OUT für Ausgabeparameter; INOUT bedeutet, dass es sowohl Eingabe als auch Ausgabe sein kann; der Parameter param_name ist der Parametername der gespeicherten Prozedur; der Parameter type gibt den Parametertyp der gespeicherten Prozedur an, der jeder beliebige Datentyp der MySQL-Datenbank sein kann.

Der charakteristische Parameter hat mehrere Werte. Die Werte lauten wie folgt:

SPRACHE SQL: Gibt an, dass der Teil routine_body aus Anweisungen in der SQL-Sprache besteht, die auch die Standardsprache des Datenbanksystems ist.

[NICHT] DETERMINISTISCH: Gibt an, ob das Ausführungsergebnis der gespeicherten Prozedur deterministisch ist. DETERMINISTISCH bedeutet, dass das Ergebnis sicher ist. Jedes Mal, wenn Sie eine gespeicherte Prozedur ausführen, führt dieselbe Eingabe zur selben Ausgabe. NICHT DETERMINISTISCH bedeutet, dass das Ergebnis nicht deterministisch ist und dieselben Eingaben unterschiedliche Ausgaben erzeugen können. Standardmäßig sind die Ergebnisse nicht deterministisch.

{ ENTHÄLT SQL | KEIN SQL | LIEST SQL-DATEN | ÄNDERT SQL-DATEN }: Gibt Einschränkungen für die Verwendung von SQL-Anweisungen durch die Subroutine an. CONTAINS SQL bedeutet, dass das Unterprogramm SQL-Anweisungen enthält, jedoch keine Anweisungen zum Lesen oder Schreiben von Daten; NO SQL bedeutet, dass das Unterprogramm keine SQL-Anweisungen enthält; READS SQL DATA bedeutet, dass das Unterprogramm Anweisungen zum Lesen von Daten enthält; MODIFIES SQL DATA bedeutet, dass das Unterprogramm Anweisungen zum Schreiben von Daten enthält. Standardmäßig ist CONTAINS SQL angegeben.

SQL-SICHERHEIT { DEFINER | INVOKER }: Gibt an, wer die Ausführungsberechtigung hat. DEFINER bedeutet, dass nur der Definierer es ausführen kann; INVOKER bedeutet, dass der Anrufer es ausführen kann. Standardmäßig lautet das vom System zugewiesene Privileg DEFINER.

COMMENT 'Zeichenfolge': Kommentarinformationen.

Tipp: Beim Erstellen einer gespeicherten Prozedur gibt das System standardmäßig CONTAINS SQL an und weist damit darauf hin, dass in der gespeicherten Prozedur SQL-Anweisungen verwendet werden. Wenn in der gespeicherten Prozedur jedoch keine SQL-Anweisungen verwendet werden, ist es am besten, sie auf NO SQL zu setzen. Darüber hinaus empfiehlt es sich, im Abschnitt COMMENT einfache Kommentare zur gespeicherten Prozedur hinzuzufügen, um das spätere Lesen des Codes der gespeicherten Prozedur zu erleichtern.

[Beispiel 1] Im Folgenden wird eine gespeicherte Prozedur mit dem Namen num_from_employee erstellt. Der Code lautet wie folgt:

PROZEDUR ERSTELLEN: Anzahl_von_Mitarbeitern (IN emp_id INT, OUT count_num INT) 
     Liest SQL-Daten 
     BEGINNEN 
       SELECT COUNT(*) INTO Anzahl 
       VON Mitarbeiter 
       WO d_id=emp_id; 
     ENDE

Im obigen Code ist der Name der gespeicherten Prozedur „num_from_employee“, die Eingabevariable ist „emp_id“ und die Ausgabevariable ist „count_num“. Die SELECT-Anweisung fragt die Mitarbeitertabelle nach Datensätzen ab, deren d_id-Wert gleich emp_id ist, berechnet mit COUNT(*) die Anzahl der Datensätze mit demselben d_id-Wert und speichert das Berechnungsergebnis schließlich in count_num. Die Ausführungsergebnisse des Codes sind wie folgt:

mysql> TRENNUNGSZEICHEN && 
mysql> CREATE PROCEDURE Anzahl_von_Mitarbeitern
(IN emp_id INT, OUT Anzahl INT) 
  -> LIEST SQL-DATEN 
  -> BEGIN 
  -> SELECT COUNT(*) INTO Anzahl 
  -> VON Mitarbeiter 
  -> WO d_id=emp_id; 
  -> ENDE && 
Abfrage OK, 0 Zeilen betroffen (0,09 Sek.) 
mysql> TRENNUNGSZEICHEN ;

Wenn nach der Ausführung des Codes keine Fehlermeldung gemeldet wird, bedeutet dies, dass die Speicherfunktion erfolgreich erstellt wurde. Sie können diese gespeicherte Prozedur in Zukunft aufrufen und die SQL-Anweisungen in der gespeicherten Prozedur werden in der Datenbank ausgeführt.

Hinweis: Das Standard-Anweisungsabschlusszeichen in MySQL ist ein Semikolon (;). SQL-Anweisungen in gespeicherten Prozeduren müssen durch ein Semikolon beendet werden. Um Konflikte zu vermeiden, setzen Sie zunächst den MySQL-Terminator mit „DELIMITER &&“ auf &&. Verwenden Sie abschließend „DELIMITER ;“, um das Endzeichen wieder auf ein Semikolon zu setzen. Dies ist dasselbe wie beim Erstellen eines Triggers.

Funktion

In MySQL sieht die Erstellung einer gespeicherten Funktion grundsätzlich wie folgt aus:

CREATE FUNCTION sp_name ([func_parameter[,...]]) GIBT Typ [Merkmal ...] Routinenkörper zurück
Unter ihnen ist der Parameter sp_name der Name der gespeicherten Funktion; func_parameter stellt die Parameterliste der gespeicherten Funktion dar; RETURNS-Typ gibt den Typ des Rückgabewerts an; der Merkmalsparameter gibt die Merkmale der gespeicherten Funktion an und der Wert dieses Parameters ist derselbe wie der in der gespeicherten Prozedur. Bitte beachten Sie den Inhalt von Abschnitt 14.1.1; der Parameter routine_body ist der Inhalt des SQL-Codes und BEGIN...END kann verwendet werden, um den Anfang und das Ende des SQL-Codes zu markieren.

func_parameter kann aus mehreren Parametern bestehen, die jeweils aus einem Parameternamen und einem Parametertyp in der folgenden Form bestehen: param_name Typ

Der Parameter param_name ist der Parametername der gespeicherten Funktion; der Parameter type gibt den Parametertyp der gespeicherten Funktion an, der jeder beliebige Datentyp der MySQL-Datenbank sein kann.

[Beispiel 2] Das Folgende erstellt eine gespeicherte Funktion mit dem Namen name_from_employee. Der Code lautet wie folgt:

CREATE FUNCTION Name_vom_Mitarbeiter (emp_id INT) 
     Gibt VARCHAR(20) zurück. 
     BEGINNEN 
       RETURN (Name auswählen 
       VON Mitarbeiter 
       WO num=emp_id ); 
     ENDE

Im obigen Code ist der Name der gespeicherten Funktion name_from_employee, der Parameter der Funktion ist emp_id und der Rückgabewert ist vom Typ VARCHAR. Die SELECT-Anweisung fragt die Mitarbeitertabelle nach dem Datensatz ab, dessen Num-Wert gleich emp_id ist, und gibt den Wert des Namensfelds des Datensatzes zurück. Die Ausführungsergebnisse des Codes sind wie folgt:

mysql> TRENNUNGSZEICHEN && 
mysql> CREATE FUNCTION Name_vom_Mitarbeiter (emp_id INT ) 
  -> GIBT VARCHAR(20) ZURÜCK 
  -> BEGIN 
  -> ZURÜCK (Name auswählen 
  -> VON Mitarbeiter 
  -> WO num=emp_id ); 
  -> ENDE&& 
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) 
mysql> TRENNUNGSZEICHEN ;

Das Ergebnis zeigt, dass die gespeicherte Funktion erfolgreich erstellt wurde. Die Verwendung dieser Funktion ist dieselbe wie die der internen MySQL-Funktionen.

Verwenden von Variablen

In gespeicherten Prozeduren und Funktionen können Sie Variablen definieren und verwenden. Benutzer können das Schlüsselwort DECLARE verwenden, um Variablen zu definieren. Anschließend können Sie den Variablen Werte zuweisen. Der Gültigkeitsbereich dieser Variablen ist der Programmabschnitt BEGIN...END. In diesem Abschnitt wird erläutert, wie Variablen definiert und ihnen Werte zugewiesen werden.

1. Definieren von Variablen

In MySQL können Sie das Schlüsselwort DECLARE verwenden, um Variablen zu definieren. Die grundlegende Syntax zum Definieren einer Variablen lautet wie folgt:

DECLARE var_name[,...] Typ [DEFAULT-Wert]

Unter ihnen wird das Schlüsselwort DECLARE zum Deklarieren von Variablen verwendet; der Parameter var_name ist der Name der Variablen, und hier können mehrere Variablen gleichzeitig definiert werden; der Parameter type wird zum Angeben des Typs der Variablen verwendet; die DEFAULT-Wertklausel legt den Standardwert der Variablen auf value fest. Wenn die DEFAULT-Klausel nicht verwendet wird, ist der Standardwert NULL.

[Beispiel 3] Das Folgende definiert die Variable my_sql mit dem Datentyp INT und einem Standardwert von 10. Der Code lautet wie folgt:

DECLARE my_sql INT DEFAULT 10;

2. Zuweisen von Werten zu Variablen

In MySQL können Sie das Schlüsselwort SET verwenden, um Variablen Werte zuzuweisen. Die grundlegende Syntax der SET-Anweisung lautet wie folgt:

SET var_name = Ausdruck [, var_name = Ausdruck] ...

Unter diesen wird das Schlüsselwort SET verwendet, um Variablen Werte zuzuweisen, der Parameter var_name ist der Name der Variablen und der Parameter expr ist der Zuweisungsausdruck. Eine SET-Anweisung kann mehreren Variablen gleichzeitig Werte zuweisen, und die Zuweisungsanweisungen für jede Variable werden durch Kommas getrennt.

[Beispiel 4] Im Folgenden wird der Variable my_sql der Wert 30 zugewiesen. Der Code lautet wie folgt:

SETZEN Sie my_sql = 30;

In MySQL können Sie Variablen auch mit der Anweisung SELECT...INTO Werte zuweisen. Die grundlegende Syntax lautet wie folgt:

SELECT col_name[,…] INTO var_name[,…] FROM table_name WEHRE Bedingung
Dabei gibt der Parameter col_name den Namen des abgefragten Felds an, der Parameter var_name ist der Name der Variablen, der Parameter table_name bezieht sich auf den Namen der Tabelle und der Parameter condition bezieht sich auf die Abfragebedingung.

[Beispiel 5] Die folgende Abfrage wird für den Datensatz mit der ID 2 aus der Mitarbeitertabelle durchgeführt und der d_id-Wert des Datensatzes wird der Variablen my_sql zugewiesen. Der Code lautet wie folgt:

Wählen Sie d_id INTO my_sql aus Mitarbeiter WEHRE id = 2;

Definieren von Bedingungen und Handlern

Durch das Definieren von Bedingungen und Handlern werden die Probleme, die bei der Programmausführung auftreten können, im Voraus ermittelt. Und Lösungen für diese Probleme können im Handler definiert werden. Mit diesem Ansatz können mögliche Probleme im Voraus vorhergesehen und Lösungen vorgeschlagen werden. Dadurch kann die Fähigkeit des Programms zur Problembehandlung verbessert und abnormale Programmstopps vermieden werden. In MySQL werden Bedingungen und Handler mit dem Schlüsselwort DECLARE definiert. In diesem Abschnitt wird ausführlich erläutert, wie Bedingungen und Handler definiert werden.

1. Definieren Sie die Bedingungen

In MySQL können Sie das Schlüsselwort DECLARE verwenden, um Bedingungen zu definieren. Die grundlegende Syntax lautet wie folgt:

DECLARE Bedingungsname BEDINGUNG FOR Bedingungswert 
Bedingungswert: 
   SQLSTATE [WERT] sqlstate_value | mysql_fehlercode

Der Parameter condition_name gibt den Namen der Bedingung an, der Parameter condition_value den Typ der Bedingung und die Parameter sqlstate_value und mysql_error_code geben beide MySQL-Fehler an. Beispielsweise beträgt bei ERROR 1146 (42S02) der sqlstate_value-Wert 42S02 und der mysql_error_code-Wert 1146.

[Beispiel 6] Im Folgenden wird der Fehler „ERROR 1146 (42S02)“ definiert und mit dem Namen „kann_nicht_gefunden_werden“ bezeichnet. Es kann auf zwei verschiedene Arten definiert werden, der Code lautet wie folgt:

//Methode 1: Verwenden Sie sqlstate_value 
DECLARE kann_nicht_finden BEDINGUNG FÜR SQLSTATE '42S02'; 
//Methode 2: Verwenden Sie mysql_error_code 
DECLARE kann_nicht_finden BEDINGUNG FÜR 1146;

2. Definieren von Handlern

In MySQL können Sie das Schlüsselwort DECLARE verwenden, um Handler zu definieren. Die grundlegende Syntax lautet wie folgt:

DECLARE handler_type HANDLER FÜR 
Bedingungswert[,...] sp_statement 
handler_typ: 
  WEITER | BEENDEN | RÜCKGÄNGIG MACHEN 
Bedingungswert: 
  SQLSTATE [WERT] sqlstate_wert |
Bedingungsname | SQLWARNING 
    | NICHT GEFUNDEN | SQLEXCEPTION | mysql_error_code

Der Parameter handler_type gibt an, wie Fehler behandelt werden, und hat drei mögliche Werte. Die drei Werte sind CONTINUE, EXIT und UNDO. CONTINUE bedeutet, dass im Fehlerfall keine Verarbeitung erfolgt und die Ausführung fortgesetzt wird; EXIT bedeutet, dass die Ausführung im Fehlerfall sofort beendet wird; UNDO bedeutet, dass im Fehlerfall die vorherige Operation zurückgenommen wird. MySQL unterstützt diese Verarbeitungsmethode derzeit nicht.

Hinweis: Normalerweise sollten Sie, wenn während der Ausführung ein Fehler auftritt, die Ausführung der folgenden Anweisungen sofort abbrechen und die vorherigen Vorgänge rückgängig machen. MySQL unterstützt derzeit jedoch keine UNDO-Operationen. Daher ist es am besten, beim Auftreten eines Fehlers eine EXIT-Aktion auszuführen. Wenn der Fehlertyp im Voraus vorhergesagt und entsprechend behandelt werden kann, kann der CONTINUE-Vorgang ausgeführt werden.

Der Parameter condition_value gibt den Fehlertyp an und hat sechs mögliche Werte. sqlstate_value und mysql_error_code haben dieselbe Bedeutung wie in der Bedingungsdefinition. condition_name ist der Name der durch DECLARE definierten Bedingung. SQLWARNING repräsentiert alle sqlstate_value-Werte, die mit 01 beginnen. NOT FOUND steht für alle sqlstate_value-Werte, die mit 02 beginnen. SQLEXCEPTION stellt alle sqlstate_value-Werte dar, die nicht von SQLWARNING oder NOT FOUND erfasst werden. sp_statement stellt die Ausführungsanweisungen einiger gespeicherter Prozeduren oder Funktionen dar.

[Beispiel 7] Nachfolgend finden Sie mehrere Möglichkeiten zum Definieren von Handlern. Der Code lautet wie folgt:

//Methode 1: Erfassen Sie sqlstate_value 
DECLARE CONTINUE HANDLER FÜR SQLSTATE '42S02'
SET @info='KANN NICHT FINDEN'; 
//Methode 2: Erfassen Sie mysql_error_code 
DECLARE CONTINUE HANDLER FÜR 1146 SET @info='KANN NICHT GEFUNDEN WERDEN'; 
//Methode 3: Definieren Sie zuerst die Bedingung und rufen Sie dann DECLARE can_not_find CONDITION FOR 1146 auf. 
DECLARE CONTINUE HANDLER FÜR can_not_find SET 
@info='NICHT FINDEN'; 
//Methode 4: SQLWARNING verwenden 
DECLARE EXIT HANDLER FÜR SQLWARNING SET @info='ERROR'; 
//Methode 5: Verwenden Sie NOT FOUND 
DECLARE EXIT HANDLER FÜR NICHT GEFUNDENEN SET @info='NICHT GEFUNDEN'; 
//Methode 6: SQLEXCEPTION verwenden 
DECLARE EXIT HANDLER FÜR SQLEXCEPTION SET @info='ERROR';

Der obige Code zeigt 6 Möglichkeiten zum Definieren von Handlern.

Die erste Methode besteht darin, den sqlstate_value-Wert zu erfassen. Wenn der SQLstate_Value 42S02 ist, wird die CONTINUE-Operation ausgeführt und die Meldung „CAN NOT FIND“ ausgegeben.

Die zweite Methode besteht darin, den mysql_error_code-Wert zu erfassen. Wenn der mysql_error_code-Wert 1146 ist, wird die CONTINUE-Operation ausgeführt und die Meldung „CAN NOT FIND“ ausgegeben.

Die dritte Methode besteht darin, zuerst die Bedingung zu definieren und sie dann aufzurufen. Hier definieren wir zuerst die Bedingung „can_not_find“ und führen die Operation „CONTINUE“ aus, wenn ein Fehler 1146 auftritt.

Die vierte Methode ist die Verwendung von SQLWARNING. SQLWARNING erfasst alle sqlstate_value-Werte, die mit 01 beginnen, führt dann die EXIT-Operation aus und gibt die Meldung „ERROR“ aus.

Die fünfte Methode ist die Verwendung von NOT FOUND. NOT FOUND erfasst alle sqlstate_value-Werte, die mit 02 beginnen, führt dann die EXIT-Operation aus und gibt die Meldung „CAN NOT FIND“ aus.

Die sechste Methode ist die Verwendung von SQLEXCEPTION. SQLEXCEPTION erfasst alle sqlstate_value-Werte, die nicht von SQLWARNING oder NOT FOUND erfasst werden, führt dann eine EXIT-Operation aus und gibt eine „ERROR“-Meldung aus.

Zusammenfassung zum Schreiben gespeicherter MySQL-Prozeduren

1. Erstellen Sie eine gespeicherte Prozedur ohne Parameter.

Prozedur „product()“ erstellen
beginnen
    wähle * vom Benutzer;
Ende;

Eine einfache Anweisung zum Erstellen einer gespeicherten Prozedur. Die aufrufende Anweisung lautet:

call procedure();

##Beachten Sie, dass diese Schreibweise zu einem Syntaxfehler führt, wenn Sie es in der Befehlszeile schreiben. Wählen Sie also diesen Satz zum Beenden aus
mysql erklärt es, und Sie sollten zuerst das Endzeichen ändern:

Trennzeichen //
Prozedur „product()“ erstellen
beginnen
    wähle * vom Benutzer;
Ende //

Ändere es endlich wieder

delimiter ;

2. Erstellen Sie eine gespeicherte Prozedur mit Parametern

Der Speicher mit Parametern umfasst zwei Parameter:
Einer ist der eingehende Parameter;
Einer ist der ausgehende Parameter;
Beispielsweise eine gespeicherte Prozedur:

Prozedur erstellen Prozedur2(
aus p1 dezimal(8,2),
aus p2 dezimal(8,2),
in p3 int
)
beginnen
Wählen Sie Summe(UID) in P1 vom Benutzer, wobei Auftragsname = P3 ist.
Wählen Sie avg(uid) in p2 vom Benutzer aus;
Ende ;

Aus den obigen SQL-Anweisungen können wir ersehen, dass p1 und p2 zum Abrufen und Ausgeben von Werten verwendet werden, während für den Aufruf von p3 ein bestimmter Wert übergeben werden muss.
Sehen Sie sich den spezifischen Anrufvorgang an:

call product(); //Keine Parameter
call procedure2(@userSum,@userAvg,201708); //mit Parametern

Wenn diese aufgebraucht sind, können die Werte von userSum und userAvg direkt abgefragt werden:

wählen Sie @userSum, @userAvg;

Die Ergebnisse sind wie folgt:

+----------+----------+
| @BenutzerSumme | @BenutzerDurchschnitt |
+----------+----------+
| 67,00 | 6,09 |
+----------+----------+
1 Zeile im Satz (0,00 Sek.)

3. Löschen Sie die gespeicherte Prozedur

Eine Anweisung: drop procedure product; //Keine Klammern danach

4. Ein vollständiges Beispiel für eine gespeicherte Prozedur:

-- Name: drdertotal 
-- Parameter: onumber = Bestellnummer 
-- steuerpflichtig = 0 wenn nicht steuerpflichtig, 1 wenn steuerpflichtig 
--ototal = Bestellsummenvariable 
 
Prozedur „ordertotal“ erstellen ( 
in onumber int, 
in steuerpflichtigem Booleschen Wert, 
out ototal dezimal(8,2) 
) commit 'Bestellsumme abrufen, optional mit Mehrwertsteuer'  
beginnen 
  -- Variable für Gesamtsumme deklarieren 
  Deklariere die Summe als Dezimalzahl (8,2); 
  -- Steuersatz angeben 
  Deklarieren Sie den Steuersatz int als Standardwert 6; 
   
  --Erhalten Sie den Bestellwert 
  Wählen Sie Summe (Artikelpreis * Menge) 
  von Bestellartikeln 
  wobei order_num = onumber 
  ins Gesamte; 
   
  --Ist das steuerpflichtig? 
  wenn steuerpflichtig dann 
    --Ja, also addieren Sie den Steuersatz zum Gesamtbetrag 
    Wählen Sie Gesamtsumme + (Gesamtsumme/100*Steuersatz) in Gesamtsumme; 
  Ende wenn; 
   
  --Fügen Sie abschließend „Speichern in der Out-Variable“ hinzu 
  Wählen Sie „Gesamt“ in „Ototal“ aus. 
Ende;

Die obige gespeicherte Prozedur ähnelt der Geschäftsverarbeitung in höheren Programmiersprachen. Sie ist nicht schwer zu verstehen. Achten Sie auf die Einzelheiten beim Schreiben.

Commit-Schlüsselwort: Es ist nicht erforderlich, wird aber, wenn es angegeben wird, in den Ergebnissen zum Anzeigen des Prozedurstatus angezeigt.

if-Anweisung: Dieses Beispiel zeigt die grundlegende Verwendung der mysqlif-Anweisung. Die if-Anweisung unterstützt auch elseif- und else-Klauseln.

Mit show procedure status können Sie alle gespeicherten Prozeduren detailliert auflisten und einen

Gefällt mir+Geben Sie den zu filternden Filtermodus an.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der gespeicherten MySQL-Prozedur
  • Einführung in die Verwendung der Cursorschleife für gespeicherte Prozeduren in MySQL
  • Detaillierte Erläuterung der Anwendungsbeispiele für gespeicherte MySQL-Prozeduren
  • Detaillierte Erläuterung der gespeicherten Prozeduren und Funktionen von MySql
  • Beispiel einer gespeicherten MySQL-Prozedur mit Eingabe- und Ausgabeparametern
  • Der Unterschied zwischen gespeicherten MySQL-Prozeduren und -Funktionen
  • Grafische Erläuterung des MySQL-gespeicherten Verfahrensbeispiels

<<:  Das WeChat-Applet implementiert die Aufnahmefunktion

>>:  So passen Sie geplante AT- und Cron-Aufgaben in Linux an

Artikel empfehlen

js implementiert einen einfachen Countdown

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie die ElementUI-Paginierungskomponente Paginierung in Vue

Die Verwendung der ElementUI-Paging-Komponente Pa...

Lösung für 1067, wenn Mysql in Windows startet

Ich habe erst vor ein paar Tagen mit der Arbeit b...

So führen Sie ein Python-Skript auf Docker aus

Erstellen Sie zunächst ein spezielles Projektverz...

JavaScript-Grundlagen dieser Verweisung

Inhaltsverzeichnis Das Verfahren Im Objekt Verste...

Top 10 der nützlichsten und wichtigsten Open-Source-Tools im Jahr 2019

In der Open-Source-Umfrage von Black Duck aus dem...

Webdesign-Tutorial (6): Behalte deine Leidenschaft für Design

<br />Vorheriger Artikel: Webdesign-Tutorial...

CSS Flex mehrere mehrspaltige Layouts

Grundlegendes dreispaltiges Layout .Container{ An...

Detaillierte Verwendung des Docker-Maven-Plugins

Inhaltsverzeichnis Docker-Maven-Plugin Schritte z...

Detaillierte Hinweise zu React für Einsteiger

Inhaltsverzeichnis 1. Grundlegendes Verständnis v...