1. Was ist ein Cursor? Obwohl wir einen Datensatz auch über die Filterbedingungen WHERE und HAVING oder das Schlüsselwort LIMIT zurückgeben können, um die zurückgegebenen Datensätze einzuschränken, können wir einen Datensatz nicht wie einen Zeiger vorwärts oder rückwärts im Ergebnissatz lokalisieren oder Zu diesem Zeitpunkt können Sie den Cursor verwenden. Der Cursor bietet einen flexiblen Betriebsmodus, der es uns ermöglicht, jeden Datensatz im Ergebnissatz zu lokalisieren und die Daten im angezeigten Datensatz zu verarbeiten. Cursor geben SQL, einer satzorientierten Sprache, die Möglichkeit, Prozeduren zu entwickeln. In SQL ist ein Cursor ein temporäres Datenbankobjekt, das auf eine in einer Datenbanktabelle gespeicherte Datenzeile zeigen kann. Hier Beispielsweise fragen wir die Mitarbeitertabelle ab, um herauszufinden, welche Mitarbeiter ein Gehalt über 15.000 haben: SELECT Mitarbeiter-ID, Nachname, Gehalt FROM Mitarbeiter WO Gehalt > 15000; Hier können wir den Cursor verwenden, um die Datenzeilen zu bearbeiten. Wie in der Abbildung gezeigt, ist die Zeile, in der sich der Cursor befindet, der Datensatz „108“. Wir können den Cursor auch im Ergebnissatz scrollen, um auf eine beliebige Zeile im Ergebnissatz zu zeigen. 2. So verwenden Sie CursorCursor müssen vor Handlern deklariert werden, und Variablen und Bedingungen müssen auch vor Cursorn oder Handlern deklariert werden. 1. Deklarieren Sie einen CursorSyntaxformat: DECLARE Cursorname CURSOR FOR Abfrageanweisung; Um den Datenergebnissatz abzurufen, verwenden Sie die SELECT-Anweisung. Zu diesem Zeitpunkt wurden die Daten jedoch noch nicht durchlaufen. Die Abfrageanweisung stellt hier die SELECT-Anweisung dar, Beispiel: DECLARE emp_cur CURSOR FÜR Wählen Sie Mitarbeiter-ID, Gehalt aus Mitarbeitern aus. 2. Öffnen Sie den CursorSyntaxformat: ÖFFNEN Sie den Cursornamen; Nachdem wir den Cursor definiert haben, müssen wir ihn zuerst öffnen, wenn wir ihn verwenden möchten. Wenn der Cursor geöffnet wird, wird der Abfrageergebnissatz der SELECT-Anweisung an den Cursorarbeitsbereich gesendet und darauf vorbereitet, dass der nachfolgende Cursor 3. Verwenden Sie den CursorSyntaxformat: FETCH Cursorname INTO Varname [, Varname] ... Die Funktion dieser Anweisung besteht darin, Hinweis: var_name muss vor der Deklaration des Cursors definiert werden. Beispiel: FETCH emp_cur INTO emp_id, emp_sal; Hinweis: Die Anzahl der Felder im Ergebnissatz der Cursorabfrage muss mit der Anzahl der Variablen nach INTO übereinstimmen. 4. Schließen Sie den CursorSyntaxformat: Cursorname schließen; Wenn wir den Cursor nicht mehr brauchen, müssen wir ihn schließen. Da der Cursor Nach dem Schließen des Cursors können wir keine Datenzeilen mehr in den Abfrageergebnissen abrufen. Wenn wir sie abrufen müssen, können wir den Cursor nur erneut öffnen. 3. Codebeispiele#Erstellen Sie eine gespeicherte Prozedur "get_count_by_limit_total_salary()", #Deklarieren Sie den IN-Parameter limit_total_salary vom Typ DOUBLE; deklarieren Sie den OUT-Parameter total_count vom Typ INT. #Die Funktion kann die Gehaltswerte der Mitarbeiter mit dem höchsten Gehalt addieren. #Bis das Gesamtgehalt den Wert des Parameters limit_total_salary erreicht, geben Sie die kumulierte Anzahl der Personen an total_count zurück. TRENNUNGSZEICHEN $ VERFAHREN ERSTELLEN get_count_by_limit_total_salary(IN limit_total_salary DOUBLE, OUT total_count INT) BEGINNEN DECLARE count_emp INT DEFAULT 0; #Wird zum Aufzeichnen der Personenanzahl verwendet, der Standardwert ist 0 DECLARE sum_sal DOUBLE DEFAULT 0; #Gesamtgehalt aufzeichnen DECLARE one_sal DOUBLE DEFAULT 0; #Gehalt einer Person aufzeichnen #Deklarieren Sie einen Cursor, um das abgefragte Gehaltsergebnis von hoch nach niedrig zu sortieren. DECLARE emp_cur CURSOR FOR SELECT salary FROM employees ORDER BY salary DESC; OPEN emp_cur; #Öffne den Cursor # Verwenden Sie Schleifenanweisungen, um zu durchlaufen, bis das Gesamtgehalt den Anforderungen der Frage entspricht. WIEDERHOLEN #Beginnen Sie mit der Verwendung des Cursors FETCH emp_cur INTO one_sal; SETze Summe_Salz = Summe_Salz + Eins_Salz; SET Anzahl_emp = Anzahl_emp + 1; BIS Gehaltssumme >= Gesamtgehaltsgrenze ENDE WIEDERHOLUNG; CLOSE emp_cur; #Cursor schließen #Gibt das Ergebnis an total_count zurück Wählen Sie count_emp in total_count aus. ENDE $ TRENNUNGSZEICHEN ; Rufen Sie get_count_by_limit_total_salary(30000,@count) auf; WÄHLEN SIE @count; Denkanalyse: Erstellen Sie zuerst eine gespeicherte Prozedur und deklarieren Sie dann die Variablen, die Sie entsprechend der tatsächlichen Situation benötigen, um die Anforderungen der Frage zu erfüllen. Der Cursor sollte schrittweise erstellt werden: Öffnen Sie den Cursor, verwenden Sie den Cursor und schließen Sie schließlich den Cursor. Achten Sie darauf, den Cursor in einer Schleife zu verwenden, um die Einfachheit des Codes zu verbessern. 4. Zusammenfassung Der Cursor ist eine wichtige Funktion von MySQL, die eine perfekte Lösung zum Dies bringt jedoch auch einige Leistungsprobleme mit sich. Wenn beispielsweise der Cursor verwendet wird, werden die Datenzeilen Empfehlung: Machen Sie es sich zur Gewohnheit, Dinge nach dem Gebrauch zu schließen, um die Gesamteffizienz des Systems zu verbessern.
Dies ist das Ende dieses Artikels über die ausführliche Einführung des MySQL-Cursors. Weitere relevante MySQL-Cursor-Inhalte finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Beispiel für die Verwendung von Nginx zur Implementierung eines TCP-Proxys mit Portweiterleitung
>>: Ein kurzer Vortrag über Responsive Design
Inhaltsverzeichnis Vorwort 1. Ermitteln Sie die L...
Inhaltsverzeichnis Vorwort Verbindungsverwaltung ...
Schauen wir uns zunächst die offizielle MySQL-Dok...
Einführung Inkrementelles Backup bedeutet, dass n...
Wir wissen, dass es in der Shell zwei Möglichkeit...
Methode 1: Verwenden Sie zur Lösung die CSS-Überl...
Heute zeige ich Ihnen einen gut aussehenden Zähle...
Inhaltsverzeichnis 1. Hintergrund des Problems: 2...
1. Zusammengesetzter Primärschlüssel Der sogenann...
1 Überprüfen Sie, ob der Kernel ein Tun-Modul hat...
Ehrlich gesagt erfordert diese Frage eine Menge g...
Wir alle haben Dateien auf unseren Computern gesp...
Inhaltsverzeichnis Der Anfang der Geschichte Inst...
Vorstehend: Dieses Dokument basiert auf der Annah...
HTML-Onfocus-Ereignisattribute Definition und Ver...