Dieser Artikel erläutert anhand von Beispielen das Konzept und die Verwendung von MySQL-Cursorn. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: 1. Das Konzept des Cursors (Cursor)
2. Schritte zur Verwendung des Cursors (1) Erklärung Deklarieren mit „declare“ Cursornamen Cursor für Select_Statement deklarieren (2) Öffnen Sie den Cursor Verwenden Sie „open“ zum Öffnen Cursorname öffnen (3) Wert vom Cursor abrufen Verwenden von „fetch“ zum Abrufen von Werten fetch cursor name into var1,var2[,...] -- Die abgerufene Zeile mehreren Variablen zuweisen (4) Schließen Sie den Cursor Mit „Close“ schließen Sie den Cursor Schließen Cursorname 3. Erstellen Sie einen einfachen Cursor
Daten der Warentabelle: Hinweis: Ich habe hier die MySQL-Endkennung in $ geändert. Wenn Sie wissen möchten, wie Sie sie auf $ setzen, lesen Sie bitte den vorherigen Artikel: MySQL-Trigger. Definition: Prozedur p12() erstellen beginnen /*Definieren Sie drei Variablen zum Speichern der Produkt-ID, des Produktnamens und des Produktbestands*/ Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie den Getgoods-Cursor, um gid, name, num aus goods auszuwählen. --Definieren Sie den Cursor „open getgoods“. --Öffnen Sie den Cursor, um „getgoods“ in row_gid, row_name, row_num abzurufen. --Holen Sie sich den Wert vom Cursor, wählen Sie row_name, row_num aus. --Anzeigevorgang „close getgoods“; --Cursor schließen, end$ Ausgabe: 4. Operationen mit mehreren Werten Prozedur p13() erstellen beginnen Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie den GetGoods-Cursor, um GID, Name und Nummer aus den Waren auszuwählen. öffne getgoods; Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. getgoods schließen; Ende$ Ausgabe: Hinweis: Wenn der Cursor das Ende erreicht, tritt ein Fehler auf, falls Sie mit dem Abrufen weiterer Werte fortfahren. 5. Der Cursor durchläuft alle Daten in der Tabelle (1) Verwenden eines Zählers zum Schleifen Prozedur p14() erstellen beginnen Deklarieren Sie cnt int als Standard 0; deklariere i als int default 0; Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie den GetGoods-Cursor, um GID, Name und Nummer aus den Waren auszuwählen. Wählen Sie count(*) in cnt aus Waren; öffne getgoods; wiederholen Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. setze i:= i+1; bis i >= cnt, Ende, wiederholen; getgoods schließen; Ende$ Ausgabe: (2) Verwenden Sie das Out-of-Bounds-Flag, um die Schleife zu steuern Im MySQL-Cursor können Sie Grammatik: Deklarieren Sie einen Continue-Handler für die NOT FOUND-Anweisung. verwenden: Prozedur p15() erstellen beginnen Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie „int“ als Standardwert „1“. Deklarieren Sie den GetGoods-Cursor, um GID, Name und Nummer aus den Waren auszuwählen. Deklarieren Sie den Continue-Handler für den Satz NOT FOUND:= 0; öffne getgoods; wiederholen Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. bis = 0, Ende, wiederholen; getgoods schließen; Ende$ Ausgabe: Hinweis: Hier ist ein Fehler aufgetreten. Es wurden vier Datenzeilen ausgegeben, aber in der Tabelle waren nur drei Datenzeilen. Außerdem wurde eine Warnung angezeigt. Wie Sie dieses Problem lösen können, erklären wir später. Logik der Programmausführung: Cursorschleife -> dritte Daten abrufen -> anzeigen -> vierte Daten abrufen -> keine Daten -> Operation „have=0“ festlegen -> Continue-Handler ausführen -> Programm wird nicht beendet, Anzeigeoperation ausführen -> trotzdem dritte Daten anzeigen 6. Der Unterschied zwischen „Continue“ und „Exit“
Verwenden Sie „exit“, um „continue“ zu ersetzen: Cursorschleife -> dritte Daten abrufen -> anzeigen -> vierte Daten abrufen -> keine Daten -> have=0 setzen -> Programm wird direkt beendet Daher werden die vierten Daten nicht angezeigt. Prozedur p16() erstellen beginnen Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie „int“ als Standardwert „1“. Deklarieren Sie den GetGoods-Cursor, um GID, Name und Nummer aus den Waren auszuwählen. Deklarieren Sie den Exit-Handler für NOT FOUND, und setzen Sie Folgendes ein: = 0; öffne getgoods; wiederholen Holt GetGoods in Row_GID, Row_Name, Row_Num. Wählen Sie Zeilenname, Zeilennummer. bis = 0, Ende, wiederholen; getgoods schließen; Ende$ Ausgabe: 7. Cursorschleife korrigieren
Zuerst sollten Sie einen Cursor erstellen. Nachdem Sie den Cursor geöffnet haben, sollten Sie manuell eine Datenzeile abrufen. Verarbeiten Sie dann in einer Schleife zuerst den Inhalt und rufen Sie ihn dann ab. Auf diese Weise wird have = 0 ausgeführt, wenn während der manuellen Datenerfassungsphase keine Daten erfasst werden. Wenn es sich um eine Wiederholungsschleife handelt, wird die Wiederholungsschleife aufgerufen, zuerst werden Nulldaten ausgegeben und dann erneut erfasst. Auf diese Weise wird die Schleife beendet, wenn sie bis „until“ läuft. Wenn es sich um eine while-Schleife handelt, wird die while-Schleife überhaupt nicht aufgerufen und es erfolgt keine Ausgabe einer Zeile. (1) Schleife wiederholen: Prozedur p17() erstellen beginnen Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie „int“ als Standardwert „1“. Deklarieren Sie den GetGoods-Cursor, um GID, Name und Nummer aus den Waren auszuwählen, wobei 0 ist. Deklarieren Sie den Continue-Handler für den Satz NOT FOUND:= 0; öffne getgoods; Holt GetGoods in Row_Gid, Row_Name, Row_Num. wiederholen Wählen Sie Zeilenname, Zeilennummer. Holt GetGoods in Row_Gid, Row_Name, Row_Num. bis = 0, Ende, wiederholen; getgoods schließen; Ende$ Ausgabe: (2) While-Schleife: Prozedur p18() erstellen beginnen Deklarieren Sie row_gid int; Deklarieren Sie Zeilenname varchar (20); Deklarieren Sie row_num int; Deklarieren Sie „int“ als Standardwert „1“. Deklarieren Sie den GetGoods-Cursor, um GID, Name und Nummer aus den Waren auszuwählen, wobei 0 ist. Deklarieren Sie den Continue-Handler für den Satz NOT FOUND:= 0; öffne getgoods; Holt GetGoods in Row_Gid, Row_Name, Row_Num. während haben = 1 tun Wählen Sie Zeilenname, Zeilennummer. Holt GetGoods in Row_Gid, Row_Name, Row_Num. Ende während; getgoods schließen; Ende$ Ausgabe: Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: Vue implementiert den Schnittstellen-Gleiteffekt
1. Verbindung zu MySQL herstellen Format: mysql -...
Einführung in Jib Jib ist eine von Google entwick...
Docker-Installation 1. Anforderungen: Linux-Kerne...
Vorwort Unter Linux ist zum Kompilieren und Verkn...
MySQL5.6.40-Installationsprozess unter CentOS7 64...
Diese Datenbankabfrageanweisung ist eine von 50 D...
Das Jupyter-Notebook wird unter dem Docker-Contai...
Dieser Artikel zeichnet das Installationstutorial...
Das grafische Tutorial zur Installation und Konfi...
Man muss sagen, dass ein Webdesigner ein Generalis...
Inhaltsverzeichnis Vorwort Was ist DrawCall Welch...
Inhaltsverzeichnis 01. Verwenden Sie useState, we...
Inhaltsverzeichnis 1. WeChat Pay öffnen 1.1 Partn...
Vor ein paar Tagen habe ich mir ein Video von ein...
Fügen Sie die Datei jvm.options zur Elasticsearch...