Beispiele für MySQL Cursor

Beispiele für MySQL Cursor
In MySQL gibt die Auswahlabfrage nach der Ausführung als Ergebnissatz eine Liste der übereinstimmenden Datensätze zurück. Der Cursor ist ein nützliches Merkmal von MySQL, um jeden Datensatz getrennt von der Ergebnismenge zu durchqueren. Manchmal muss für alle spezifischen Datensätze des Ergebnisssatzes eine zusätzliche Verarbeitung durchgeführt werden, bevor die Abfrageausgabe zurückgegeben wird. Dies kann einfach mit dem Cursor erfolgen. Die Merkmale, Vor-, Nachteile und Verwendungen des MySQL Cursors wurden in diesem Tutorial beschrieben.

Merkmale des MySQL Cursors:

  1. MySQL Cursor ist assensitiv für die MySQL Version 8+. Dies bedeutet, dass der Datenbankserver möglicherweise eine Kopie des Ergebnissatzes erstellt oder nicht.
  2. MySQL Cursor ist schreibgeschützt. Es kann also nicht zur Aktualisierung des Datensatzes verwendet werden.
  3. MySQL Cursor ist nicht scrollbar. Es bedeutet, dass es nur vorwärts gehen kann und keinen Datensatz überspringen kann.

Schritte zur Verwendung eines Cursors:

Die Hauptschritte bei der Verwendung des Cursors in MySQL zum Lesen jedes Ergebnis -Set -Datensatzes sind unten angezeigt.

Einen Cursor deklarieren:

Cursor_name cursor für select_statement;

Die Cursorvariable muss für die Iterierung des von der Auswahlanweisung zurückgegebenen Ergebnisses definiert werden.

Öffnen Sie den Cursor

Öffnen cursor_name;

Der Cursor muss sich öffnen, um den Ausgangspunkt des Ergebnissatzes zu verweisen.

Holen den Cursor

Fetch cursor_name in variable_list;

Mit dem Befehl Abrufen wird die in der zum Zeitpunkt der Erklärung des Cursor verwendeten Felder in der Abfrage ausgewählten Abfrage verwendet.

Schließen Sie den Cursor

Cursor_Name schließen;

Der Cursor ist erforderlich, um das Ergebnissatz zurückzusetzen und die Referenz auf die Ergebnismenge zu entfernen.

Voraussetzungen:

Sie müssen die erforderlichen Tabellen mit Daten erstellen, um die Verwendung eines Cursors in MySQL zu kennen. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um eine Verbindung mit dem MySQL -Server herzustellen, wenn kein Passwort für den Stammbenutzer vorhanden ist.

$ sudo mysql -u root

Führen Sie den folgenden Befehl aus, um die Datenbank auszuwählen.

Verwenden Sie test_db;

Führen Sie den folgenden Befehl aus, um eine Datenbank mit dem Namen zu erstellen test_db.

Datenbank erstellen test_db;

Führen Sie die folgende Anfrage aus, um eine Tabelle mit dem Namen zu erstellen sales_persons mit vier Feldern.

Erstellen von Tabellen Sales_Persons (
ID int auto_increment Primärschlüssel,
Nennen Sie Varchar (30) nicht null,
E -Mail Varchar (50),
contact_no varchar (30));

Führen Sie die folgende Anfrage aus, um drei Datensätze in die Einfügung einzulegen Verkäufer Tisch.

In 'Sales_Persons' ('ID', 'Name', 'E -Mail', 'contact_no') einfügen (null, 'Kamal Hasan', '[email protected] ',' 0191275634 '),
(Null, 'Nila Hossain', '[email protected] ',' 01855342357 '),
(Null, 'Abir Hossain', '[email protected] ',' 01634235698 ');

Führen Sie die folgende Anfrage aus, um eine Tabelle mit dem Namen zu erstellen Verkauf mit vier Feldern, die einen Fremdschlüssel enthält, der die Eins-zu-Viele-Beziehung aus dem erstellt sales_persons Tisch zum Verkauf Tisch.

Tischverkäufe erstellen (
Id int nicht null primärer Schlüssel,
Sales_date Datum nicht null,
Betrag int,
sp_id int,
Einschränkung fk_sp Fremdschlüssel (sp_id)
Referenzen Sales_Persons (ID)
Bei Löschen von Kaskade auf Update Cascade);

Führen Sie die folgende Anfrage aus, um vier Datensätze in die Einfügung einzulegen Verkauf Tisch.

Einfügen in "Verkauf" ("ID", "Sales_date", "Betrag", "sp_id") Werte
('90', '2021-11-09', '800000', '1'),
('34', '2020-12-15', '5634555', '3'),
('67', '2021-12-23', '900000', '1'),
('56', '2020-12-31', '6700000', '1');

Verwendung von MySQL Cursor:

Der Cursor wird hauptsächlich in der MySQL -Prozedur oder -Funktion verwendet, die eine oder mehrere Auswahlabfrage enthält, und der deklarierte Cursor iteriert jeden Datensatz des von der Abfrage zurückgegebenen Ergebnisses. Erstellen Sie eine MySQL -Funktion namens namens Berechnen Sie_Bonus Mit der folgenden Erklärung, die ein ganzzahliges Argument nimmt und einen Float -Wert zurückgibt. Die ausgewählte Abfrage, die in der Funktion verwendet wurde. Die Funktion des Cursors besteht darin, 15% des Gesamtumsatzes als Bonus zu berechnen, wenn der Gesamtverkaufsbetrag mehr als 10000 beträgt. Andernfalls beträgt der Bonus 10% des Gesamtumsatzes. Die Funktion gibt den Bonusbetrag basierend auf dem ID -Wert des Verkäufers zurück. Führen Sie die folgende Anweisung aus der MySQL -Eingabeaufforderung aus, nachdem Sie die Datenbank ausgewählt haben, um die Funktion zu erstellen.

Abgrenzer //
Funktion erstellen 'calculate_bonus' ('spid' int)
Gibt Varchar (200) zurück
Liest SQL -Daten
Deterministisch
START
Deklariere int intleTault false;
Deklary Total Int Default 0;
Personal varchar (50) default "";
Deklarieren Bonus int Standard 0;
Ausgangsvarchar (200) deklarieren;
Cur Cursor für deklarieren für
Wählen Sie Name, Summe (Betrag)
Aus Verkäufen, Sales_Persons
Wo sales_persons.ID = Verkauf.sp_id und sp_id = spid
Gruppe von sp_id;
Declare Weitere Handler für nicht gefundene Set erledigt = true;
Offener Cur;
Cur in Person holen, total;
Wenn insgesamt> 10000 dann
Setzen Sie Bonus = Gesamt*0.15;
ANDERS
Setzen Sie Bonus = Gesamt*0.10;
Ende wenn;
Setzen Sie Output = concat ("Der Bonus von", Person "ist TK.", Bonus", ".");
Schließen cur;
Rückgabeausgabe;
ENDE;
//

Führen Sie die folgende Anfrage aus, um alle Datensätze der sales_persons Tisch.

Wählen Sie * aus Sales_Persons;

Führen Sie die folgende Anfrage aus, um alle Datensätze der Verkauf Tisch.

Aus dem Verkauf auswählen;

Führen Sie die folgende Anfrage aus, um die anzurufen Calculate_bonus () Funktion von MySQL mit dem Argumentwert, 1. Laut der Verkaufstabelle gibt es drei Rekorde für den Verkäufer, dessen ID 1 beträgt. Der Bonus beträgt also 15% Rabatt (6700000+900000+800000).

Wählen Sie Calculate_Bonus (1);

Führen Sie die folgende Anfrage aus, um die anzurufen Calculate_bonus () Funktion von MySQL mit dem Argumentwert, 2. Laut der Verkaufstabelle gibt es keinen Rekord für den Verkäufer, dessen ID 2 beträgt. Der Bonus wird also 0 sein.

Wählen Sie Calculate_Bonus (2);

Führen Sie die folgende Anfrage aus, um die anzurufen Calculate_bonus () Funktion von MySQL mit dem Argumentwert, 3. Laut der Verkaufstabelle gibt es einen Rekord für den Verkäufer, dessen ID 3 beträgt. Der Bonus beträgt also 15% von 5634555.

Wählen Sie Calculate_Bonus (3);

Abschluss:

MySQL Cursor erleichtert die spezifische Aufgabe, indem jede Tabellenzeile iteriert wird. MySQL Cursor wurde in diesem Tutorial unter Verwendung einer MySQL -Funktion gezeigt. Der MySQL Cursor kann auch innerhalb der MySQL -Prozedur verwendet werden. Ich hoffe.