Heim  >  Artikel  >  Datenbank  >  Können Cursor in MySQL-Funktionen verwendet werden?

Können Cursor in MySQL-Funktionen verwendet werden?

青灯夜游
青灯夜游Original
2022-06-13 18:47:252691Durchsuche

Cursoren können in MySQL-Funktionen verwendet werden. In MySQL können Cursor nur für gespeicherte Prozeduren und Funktionen verwendet werden; Abfragen in gespeicherten Prozeduren oder Funktionen geben manchmal mehrere Datensätze zurück, und mit einer einfachen SELECT-Anweisung gibt es keine Möglichkeit, die erste Zeile, die nächste Zeile oder die ersten zehn Zeilen abzurufen Daten, dann können Sie einen Cursor verwenden, um die Datensätze im Abfrageergebnissatz einzeln zu lesen. Cursor können verwendet werden, um Vorwärts- oder Rückwärtsoperationen an abgerufenen Daten durchzuführen. Sie werden hauptsächlich in interaktiven Anwendungen verwendet, beispielsweise wenn Benutzer Daten auf dem Bildschirm scrollen.

Können Cursor in MySQL-Funktionen verwendet werden?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Cursoren können in MySQL-Funktionen verwendet werden.

Cursor: Auch Cursor genannt, handelt es sich um eine auf dem DBMS-Server gespeicherte Datenbankabfrage. Es handelt sich nicht um eine SELECT-Anweisung, sondern um die von der Anweisung abgerufene Ergebnismenge.

Cursorverwendung: Vorwärts- oder Rückwärtsbewegung der abgerufenen Daten, wird hauptsächlich für interaktive Anwendungen verwendet, z. B. wenn Benutzer Daten auf dem Bildschirm scrollen.

Merkmale des Cursors:

  • Kann den Cursor als schreibgeschützt markieren, um die Daten zu machen Kann lesen, aber nicht aktualisieren und löschen

  • Kann die ausführbaren Richtungsoperationen steuern (vorwärts, rückwärts, erste, letzte, absolute Position, relative Position usw.)

  • Kann bestimmte Spalten als verfügbar markieren Bearbeitbar , einige Spalten können nicht bearbeitet werden

  • Geben Sie den Bereich an, um den Cursor für die spezifische Anforderung, die ihn erstellt hat (z. B. eine gespeicherte Prozedur), oder für alle Anforderungen zugänglich zu machen

  • Nur das DBMS für die abgerufenen Daten (nicht Point die aktiven Daten in der Tabelle auszugeben), die kopiert werden sollen, damit sich die Daten während des Cursor-Öffnungs- und Zugriffszeitraums nicht ändern

In MySQL können Cursor nur für gespeicherte Prozeduren und Funktionen verwendet werden.

In MySQL geben Abfragen in gespeicherten Prozeduren oder Funktionen manchmal mehrere Datensätze zurück, und mit einer einfachen SELECT-Anweisung gibt es keine Möglichkeit, die erste Zeile, die nächste Zeile oder die ersten zehn Datenzeilen abzurufen. In diesem Fall ist dies möglich Verwenden Sie einen Cursor, um die Datensätze im Abfrageergebnissatz einzeln zu lesen. In einigen Materialien werden Cursor auch als Cursor bezeichnet.

Das relationale Datenbankverwaltungssystem ist im Wesentlichen satzorientiert. In MySQL gibt es keine Ausdrucksform zur Beschreibung eines einzelnen Datensatzes in der Tabelle, es sei denn, eine WHERE-Klausel wird verwendet, um die Auswahl nur eines Datensatzes zu beschränken. Daher müssen wir manchmal Cursor verwenden, um Daten in einem einzelnen Datensatz zu verarbeiten.

1. Deklarieren Sie den Cursor

Verwenden Sie das Schlüsselwort DECLARE in MySQL, um den Cursor zu deklarieren, die entsprechende SELECT-Anweisung zu definieren und nach Bedarf WHERE und andere Klauseln hinzuzufügen. Die Grundform seiner Syntax lautet wie folgt:

DECLARE cursor_name CURSOR FOR select_statement;

Cursor_name stellt dabei den Namen des Cursors dar, select_statement stellt die SELECT-Anweisung dar, die eine oder mehrere Datenzeilen zurückgeben kann.

Beispiel 1

Das Folgende deklariert einen Cursor mit dem Namen nameCursor. Der Code lautet wie folgt:

mysql> DELIMITER //
mysql> CREATE PROCEDURE processnames()
    -> BEGIN
    -> DECLARE nameCursor CURSOR
    -> FOR
    -> SELECT name FROM tb_student;
    -> END//
Query OK, 0 rows affected (0.07 sec)

Die obige Anweisung definiert den Cursor nur auf die gespeicherte Prozedur, den Cursor verschwindet.

2. Öffnen Sie den Cursor

Wenn Sie nach der Deklaration des Cursors Daten aus dem Cursor extrahieren möchten, müssen Sie zuerst den Cursor öffnen. In MySQL wird das Öffnen eines Cursors über das Schlüsselwort OPEN erreicht. Die Syntax lautet wie folgt:

OPEN cursor_name;

wobei Cursorname den Namen des zu öffnenden Cursors darstellt. Es ist zu beachten, dass beim Öffnen eines Cursors der Cursor nicht auf den ersten Datensatz zeigt, sondern auf den Anfang des ersten Datensatzes.

Im Programm kann ein Cursor mehrfach geöffnet werden. Nachdem der Benutzer den Cursor geöffnet hat, aktualisieren möglicherweise andere Benutzer oder Programme die Datentabelle, sodass die angezeigten Ergebnisse manchmal jedes Mal unterschiedlich sind, wenn der Benutzer den Cursor öffnet.

3. Verwenden eines Cursors

Nachdem der Cursor erfolgreich geöffnet wurde, können Sie die FETCH...INTO-Anweisung verwenden, um Daten zu lesen. Die Syntax lautet wie folgt:

FETCH cursor_name INTO var_name [,var_name]...

Speichern Sie in der obigen Anweisung das Ausführungsergebnis der SELECT-Anweisung im Cursor Cursorname in den Variablenparameter Var_name. Der variable Parameter var_name muss definiert werden, bevor der Cursor verwendet werden kann. Die Verwendung eines Cursors ähnelt dem Durchlaufen von Arrays in Hochsprachen. Wenn der Cursor zum ersten Mal verwendet wird, zeigt er auf den ersten Datensatz der Ergebnismenge.

Der Cursor von MySQL ist schreibgeschützt, das heißt, Sie können die Ergebnismenge nur der Reihe nach vom Anfang nach hinten lesen, nicht von hinten nach vorne, und Sie können auch nicht direkt zum mittleren Datensatz springen.

4. Schließen Sie den Cursor

Nachdem der Cursor verwendet wurde, muss er rechtzeitig geschlossen werden. Verwenden Sie zum Schließen des Cursors das Syntaxformat:

CLOSE cursor_name;

CLOSE gibt alle internen Elemente frei Speicher und Ressourcen, die vom Cursor verwendet werden. Daher sollte jeder Cursor geschlossen werden, wenn er nicht mehr benötigt wird.

Nachdem ein Cursor geschlossen wurde, kann er nicht mehr verwendet werden, ohne ihn erneut zu öffnen. Es ist jedoch nicht erforderlich, ihn erneut zu deklarieren, um einen deklarierten Cursor zu verwenden. Öffnen Sie ihn einfach mit der OPEN-Anweisung.

Wenn Sie den Cursor nicht explizit schließen, schließt MySQL ihn automatisch, wenn die END-Anweisung erreicht wird. Nachdem der Cursor geschlossen wurde, kann er nicht mehr mit FETCH verwendet werden.

【Verwandte Empfehlung: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonKönnen Cursor in MySQL-Funktionen verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn