Tutorial zur Verwendung von Prepare-, Execute- und Deallocate-Anweisungen in MySQL

Tutorial zur Verwendung von Prepare-, Execute- und Deallocate-Anweisungen in MySQL

Vorwort

MySQL bezeichnet die Schritte Vorbereiten, Ausführen und Freigeben offiziell als PREPARE STATEMENT. Ich nenne es normalerweise [vorbereitete Anweisung]. Die Verwendung ist sehr einfach. Schauen wir uns ohne weiteres die ausführliche Einführung an.

Beispielcode

PREPARE stmt_name FROM vorbereitbarer_stmt

EXECUTE Anweisungsname
 [VERWENDEN von @var_name [, @var_name] ...] -

{DEALLOCATE | DROP} PREPARE Anweisungsname

Zum Beispiel:

mysql> VORBEREITUNG von pr1 AUS 'SELECT ?+?';
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)
Erklärung vorbereitet

mysql> SET @a=1, @b=10;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> AUSFÜHREN pr1 USING @a, @b;
+------+
| ?+? |
+------+
| 11 |
+------+
1 Zeile im Satz (0,00 Sek.)

mysql> EXECUTE pr1 USING 1, 2; -- Es können nur Benutzervariablen übergeben werden.
FEHLER 1064 (42000): Ihre SQL-Syntax ist fehlerhaft. Lesen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, um die 
richtige Syntax für die Verwendung in der Nähe von '1, 2' in Zeile 1

mysql> DEALLOCATE PREPARE pr1;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Die Verwendung von PAREPARE STATEMENT kann die Syntaxanalyse jeder SQL-Ausführung reduzieren. Wenn Sie beispielsweise SELECT und DELETE mit WHERE-Bedingungen oder UPDATE oder INSERT ausführen, müssen Sie jedes Mal nur den Variablenwert ändern.

Auch SQL-Injection kann verhindert werden und Parameterwerte können Escape-Zeichen und Trennzeichen enthalten.

Anwendbar in Anwendungen oder SQL-Skripten.

Weitere Verwendung:

Ebenso kann PREPARE ... FROM eine direkte Verbindung zu Benutzervariablen herstellen:

mysql> TABELLE ERSTELLEN a (eine Ganzzahl);
Abfrage OK, 0 Zeilen betroffen (0,26 Sek.)

mysql> INSERT INTO eine AUSWAHL 1;
Abfrage OK, 1 Zeile betroffen (0,04 Sek.)
Datensätze: 1 Duplikate: 0 Warnungen: 0

mysql> INSERT INTO eine AUSWAHL 2;
Abfrage OK, 1 Zeile betroffen (0,04 Sek.)
Datensätze: 1 Duplikate: 0 Warnungen: 0

mysql> INSERT INTO eine AUSWAHL 3;
Abfrage OK, 1 Zeile betroffen (0,04 Sek.)
Datensätze: 1 Duplikate: 0 Warnungen: 0

mysql> SET @select_test = CONCAT('AUSWÄHLEN * FROM ', @table_name);
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> SET @Tabellenname = "a";
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> VORBEREITUNG von pr2 von @select_test;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Erklärung vorbereitet

mysql> AUSFÜHREN pr2;
+------+
| ein |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 Zeilen im Satz (0,00 Sek.)

mysql> DROP PREPARE pr2; -- DROP kann hier DEALLOCATE ersetzen
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Gewöhnen Sie sich an, jedes Mal, wenn Sie eine EXECUTE-Anweisung abschließen, die Anweisung DEALLOCATE PREPARE ... auszuführen, um alle bei der Ausführung verwendeten Datenbankressourcen (z. B. Cursor) freizugeben.

Wenn in einer Sitzung zu viele vorbereitete Anweisungen vorhanden sind, kann außerdem die Obergrenze von max_prepared_stmt_count erreicht werden.

Vorbereitete Anweisungen können nur in der Sitzung des Erstellers und nicht in anderen Sitzungen verwendet werden.

Darüber hinaus sind die zuvor definierten vorbereiteten Anweisungen nicht mehr vorhanden, wenn Sie die Sitzung auf irgendeine Weise (normal oder abnormal) beenden.

Wenn die vorbereitete Anweisung in einer gespeicherten Prozedur verwendet wird und in der Prozedur keine Freigabe erfolgt, ist sie auch nach dem Ende der gespeicherten Prozedur noch gültig.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Spezifische Verwendung der MySQL-Vorbereitungsvorverarbeitung
  • MySQL-Vorbereitungsnutzung und Fehleranalyseprozess

<<:  Einführung in das Batch-Cache-Löschskript von nginx proxy_cache

>>:  So verwenden Sie JS, um zu überprüfen, ob sich ein Element im Ansichtsfenster befindet

Artikel empfehlen

Einfache Schritte zum Konfigurieren des Nginx-Reverse-Proxys mit SSL

Vorwort Ein Reverse-Proxy ist ein Server, der übe...

Vermeiden Sie den Missbrauch zum Lesen von Daten in Vue

Inhaltsverzeichnis Vorwort 1. Der Prozess der Ver...

Einfache Schritte zum Kapseln von Komponenten in Vue-Projekten

Inhaltsverzeichnis Vorwort So kapseln Sie eine To...

Entwicklung einer Vue Element-Frontend-Anwendung zum Abrufen von Backend-Daten

Inhaltsverzeichnis Überblick 1. Erfassung und Ver...

Detaillierte Erklärung einiger Einstellungen für Tabellenanpassung und Überlauf

1. Zwei Eigenschaften des Tabellen-Resets: ①borde...

Die Vue-Konfigurationsdatei generiert automatisch Routing- und Menüinstanzcode

Inhaltsverzeichnis Vorne geschrieben router.json ...

Implementierung einer Suchfeldfunktion mit Suchsymbol basierend auf HTML-CSS

Vorwort Ich möchte Ihnen zeigen, wie Sie ein Such...

Zusammenfassung der gebräuchlichen Buchstaben in Unicode

Die meisten der ersten Computer konnten nur ASCII...

Detaillierte Schritte zur Installation von MySql 5.7.21 unter Linux

Vorwort Die am häufigsten verwendete Datenbank in...

Grundlegende Verwendung von Javascript-Array-Includes und -Reduces

Inhaltsverzeichnis Vorwort Array.Prototyp.enthält...